Posez votre question Signaler

SerialVersionUID [Résolu]

jcodeunpeu 308Messages postés 11 novembre 2005Date d'inscription - Dernière réponse le 2 janv. 2010 à 13:36
Bonjour,
qui saurait me dire à quoi correspond l'info-bulle affichant le message :
Lire la suite 

SerialVersionUID »

6 réponses
Réponse
+2
moins plus
Ajouter un commentaire
Réponse
+1
moins plus
Salut,

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

nobody
jcodeunpeu - 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 "
DoWn - 14 juin 2007 à 12:20
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...
"
azouna - 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
Ajouter un commentaire
Réponse
+0
moins plus
C'est expliqué encore mieux là
http://www.touillleur-express.fr/2008/01/26/serialversionuid-mythes-et-legendes/

Christophe
Ajouter un commentaire
Ce document intitulé « serialVersionUID » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook