2009-09-03 7 views

Répondre

9

En fait, ma solution à ce « problème » était de désactiver cet avertissement dans ma configuration de projet (j'utilise Eclipse mais je suppose que pour NetBeans est le même) que mon humble avis, il est un avertissement mal: ne pas avoir une serialVersion est le choix le plus sûr car la JVM en calcule un qui est unique au lancement (quelque chose comme le hash de la classe) tout en l'ajoutant explicitement puis charge vous pour prendre soin de le mettre à jour si et seulement si vous avez fait des changements incompatibles avec votre code .

Donc, si vous ne se soucient pas de cela, il est préférable d'éviter cette valeur (cette façon, il est uniquement compatible avec la version qui sont compatibles sûr, mais avec quelques faux positifs: il pense que ce n'est pas compatible, mais en fait ce serait) au lieu d'y mettre une valeur fixe que vous oublieriez (probablement, dans mon cas) de mettre à jour en cas de besoin, conduisant à des erreurs de validité réelles (faux négatifs: il pense qu'il est compatible mais il ne l'est pas).

+3

Cela dépend de la manière dont vous utilisez la sérialisation. Si vous allez sérialiser des classes entre différentes JVM, c'est-à-dire d'une JVM à une autre, cela peut provoquer des incompatibilités. – Yishai

+0

Il semble que cette approche fonctionnera mieux sur mon projet actuel, mais je n'ai pas trouvé d'endroit pour désactiver cet avertissement partout (et avoir beaucoup d'annotation d'avertissement de suppression semble mauvais) dans NetBeans. –

+0

Et j'ai été capable de le trouver ... –

5

Cela est également trivial à faire manuellement, sauf si vous devez rester compatible avec les instances sérialisées existantes. Il suffit de copier cette ligne dans la classe:

private static final long serialVersionUID = 1L; 

Notez qu'il n'y a absolument aucune obligation pour le serialVersionUID être unique dans toutes les classes.

+0

Bien que ce soit une bonne suggestion, j'ai décidé d'ignorer l'avertissement car ce n'est pas si important d'avoir sur ce projet particulier. Je n'ai juste pas aimé l'avertissement. –

5

Il semble que NetBeans ne prenne pas en charge cette fonctionnalité, contrairement aux plug-ins.

S'il vous plaît jeter un oeil à

link 1, link 2 et link 3

1

Pour désactiver ces avertissements dans Netbeans:

  1. ouverts: Outils -> Options
  2. Ouvert: Editor -> Conseils tab
  3. Sélectionner la langue: Java
  4. Décocher avertissements standard JavaC -> sérialisation
  5. OK

Je devais aussi effacer ~/.netbeans/6.8/var/cache et redémarrez Netbeans pour effacer les avertissements de la liste des tâches.

0

(Pour utilisateur où demander la même question maintenant)
J'utilise nb7.4 et trouvé ce plug-in de nb6.5 à nb7.4
plugin
Je l'ai testé dans nb7.4 et le travail bien. Pour la signification du look id version Servial à
serialVersionUID
si vous l'ajoutez, vous pouvez explicitement faire toute modification de votre classe sans changement uid jusqu'à ce que vous avez pas votre classe sérialisés et stocker quelque part: si vous créez la classe A serialize il
fin puis enregistrez-le sur la base de données
fin puis changer de classe A ne pas effectuer plus compatible avec l'ancienne classe A,
quand quelqu'un essaie de charger l'objet sérialisé de la dernière classe A à la nouvelle classe A, il peut avoir des problèmes . Lorsque vous changez la classe A et la rendz incompatible avec la dernière classe A, vous devez changer l'uid, donc si quelqu'un essaie de le charger, il recevra InvalidClassExceptions.

Questions connexes