SerialVersionUID

Résolu/Fermé
jcodeunpeu Messages postés 365 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 2 décembre 2006 - 20 nov. 2005 à 13:57
 grobs - 2 janv. 2010 à 13:36
Bonjour,
qui saurait me dire à quoi correspond l'info-bulle affichant le message :

3 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
20 nov. 2005 à 14:28
Salut,

qui saurait me dire à quoi correspond l'info-bulle affichant le message :

nobody
11
jcodeunpeu Messages postés 365 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 2 décembre 2006 6
20 nov. 2005 à 15:43
décidemment moi ce matin je suis un peu distrait :
info-bulle :

The Serializable class 'lamienne' does not declare a static serialVersionUID field of type long "
0
piqué sur una utre site :

"Ce warning signale qu'une classe qui implémente l'interface java.io.Serilizable n'a pas définit de serialVersionUID. En effet, le serialVersionUID permet d'affecter un numéro de version à la classe. Ce numéro doit normalement être changé lorsqu'un champs non-transiant est ajouté ou supprimé de la classe. Théoriquement, c'est le développeur qui doit créer ce champs. Toutefois, si ce champs est absent, le compilateur générera un numéro automatique.

Le champs serialVersionUID est utilisé lors de la désérialization afin de s'assurer que les versions des classes Java soient concordantes. Si ce n'est pas le cas, une InvalidClassException sera levée.

Or il se trouve que le calcul des serialVersionUID par défaut est extrêmement sensible aux modifications apportées au code source et peut même varier selon les compilateurs. Ce qui a pour inconvénient de provoquer des InvalidClassExceptions inattendus lors de la désérialisation...

Il est ainsi fortement conseillé de gérer le serialVersionUID de toutes classes sérializable, et bien sûr de modifier cette valeur lors d'un changement sur les champs de la classe. Ce warning signalera ainsi toutes classes Serializable sans définition du serialVersionUID explicite :

Main.java:5: warning: [serial] serializable class Main has no definition of serialVersionUID

Pour définir le serialVersionUID, il faut utiliser le code suivant (où 42L est le numéro de la version qui devra être changé à chaque modification sur les champs. La valeur n'a pas d'importance du moment qu'elle change lors d'un changement sur les champs à sérializer) :

private static final long serialVersionUID = 42L;

Donc il te faut définir un serialVersionUID pour faire disparaître le warning...
Toutefois ceci n'est vraiment utile que si tu vas sérializer ta classe...
"
0
azouna > DoWn
28 avril 2008 à 09:45
bonjour,
merci pour tes explications, j'ai ce même message de warning, "The serializable class AddDocumentForm does not declare a static final serialVersionUID field of type long", j'ai pas bien compri tes explications, es ce que il s'agit d'une configuration ou bien de versions de JKD, or que autre personne travaillant avec moi er ayant la même version du code source n'as pas ces warnings, pourtant j'utilise JDK1.6.0
merci beacoups
0
C'est expliqué encore mieux là
http://www.touillleur-express.fr/2008/01/26/serialversionuid-mythes-et-legendes/

Christophe
1