7
votes

NetBeans peut-il générer une carte de version de série automatique pour une classe Java?

Je voudrais supprimer des avertissements pour certaines classes en générant une carte de version de série automatique. Dans Eclipse, cela est trivial à faire - l'IDE peut en générer une automatiquement et l'ajouter à la classe. Cependant, je ne vois pas cette fonctionnalité dans Netbeans. Est-ce disponible? Si oui, où est-ce? Sinon, existe-t-il un plugin qui peut l'activer?


0 commentaires

5 Réponses :


7
votes

Ceci est trivial à faire manuellement également, sauf si vous devez rester compatible avec les instances sérialisées existantes. Copiez simplement cette ligne dans la classe: xxx

Notez qu'il n'ya absolument aucune exigence pour le SerialVersionSionUID unique sur des classes.


1 commentaires

Bien que cela soit une bonne suggestion, j'ai décidé d'ignorer l'avertissement car il n'est pas important d'avoir sur ce projet particulier. Je n'ai tout simplement pas aimé l'avertissement montrant.



9
votes

En fait, ma solution à ce "problème" était de désactiver cet avertissement dans ma configuration du projet (j'utilise Eclipse mais je suppose que les NetBeans sont les mêmes) que l'IMHO c'est un mauvais avertissement: ne pas avoir une série de Serialversion est le choix le plus sûr car le JVM calcule un unique sur le lancement (quelque chose comme le hachage de la classe) tout en ajoutant explicitement, alors battons vous Prendre soin de la mettre à jour si et seulement si vous avez apporté des modifications incompatibles à votre code.

Donc, si vous ne vous souciez pas de cela, il vaut mieux éviter cette valeur (cette manière compatible avec la version compatible à coup sûr , mais avec des faux positifs: il pense que c'est non compatible, mais en fait, il serait) au lieu de mettre là une valeur fixe que vous voudriez (probablement dans mon cas) oublier de mettre à jour en cas de besoin, entraînant des erreurs de validité réelles (faux négatifs: il pense qu'il est compatible, mais il n'est pas).


3 commentaires

Cela dépend de la manière dont vous utilisez la sérialisation. Si vous serez des cours sérialisés sur différents JVM, c'est-à-dire d'une JVM à une autre, cela peut provoquer des incompatitilations.


Il semble que cette approche fonctionne mieux sur mon projet actuel, mais je n'ai pas vu de place pour transformer cet avertissement partout (et que de nombreuses annotations d'avertissement semble mauvais) dans Netbeans.


L'utilisation de la version ne peut pas entraîner une série de sérialisation entre deux JVM ou entre différents systèmes d'exploitation, ou différentes versions Java et d'autres cas réels, de sorte que vous devez partager des objets Java sur différents systèmes, il est très recommandé d'utiliser l'ID de version, même si vous Enregistrer des objets, fermez le système puis mettez à jour que la JVM pourrait conduire à casser la sérialisation.



6
votes

On dirait que la boîte Netbeans ne prend pas en charge la fonctionnalité, mais les plug-ins font.

S'il vous plaît jeter un oeil sur

lien 1 , link 2 et Link 3


0 commentaires

0
votes

Pour désactiver ces avertissements dans Netbeans:

  1. Ouvrir: Outils -> Options
  2. Ouvrir: Editeur -> Onglet Astuces
  3. Sélectionnez la langue: Java
  4. Décochez les avertissements standard Javac -> Série
  5. OK

    J'ai aussi dû effacer ~ / .Netbeans / 6.8 / var / cache et redémarrer Netbeans pour effacer les avertissements de la liste des tâches.


0 commentaires

1
votes

(pour l'utilisateur qui demande la même question maintenant)
J'utilise NB7.4 et j'ai trouvé ce plugin à partir de NB6.5 à NB7.4
Plugin
Je l'ai testé dans NB7.4 et travaille bien. Pour la signification de la version serviale, je regarde

SerialversionSionUID
Si vous l'ajoutez explicitement, vous pouvez tout changement à votre classe sans changer d'UID avant de ne pas avoir votre classe sérialisée et de stocker quelque part: Si vous créez une classe A Serialize IT
End puis rangez-le sur la base de données
fin, puis changez la classe A ne faisant plus compatible avec l'ancien classe A,
Lorsque quelqu'un essaie de charger l'objet sérialisé de la dernière classe A à la nouvelle classe A, il peut avoir un problème.

Lorsque vous changez de classe A et que vous le faites incompatible avec la dernière classe A, vous devez changer d'UID afin que quelqu'un essaie de charger, il obtiendra desceptions invalides.


0 commentaires