Comment eviter une exception de serialVersionUID ? - Java - Programmation
Marsh Posté le 18-05-2005 à 14:23:25
toutes les variables d'instance non-transient doivent être sérialisables aussi.
google > serialization+tutorial+java
Marsh Posté le 18-05-2005 à 15:14:40
J'ai rajouté ca dans ma classe Environnement comme ils le dise dans l'API:
static final long serialVersionUID = 42L;
Mais je pige toujours pas pourquoi il me met des warnings concernant les classes qui n'implemente pas serializable ..
Marsh Posté le 18-05-2005 à 15:19:13
parce qu'elle seront appellées à être sérialisées si tu sérialises Environnement, car certaines des variables d'instances non-transient sont typées par ces classes.
Marsh Posté le 18-05-2005 à 16:21:26
Ok d'accord donc sachant que dans GUI et MonPanel j'utilise une instance d'Environnement et que je veuille serializé Environnement il va aussi serialisé GUI et MonPanel ?
C'est mysterieux ça ??!!
Marsh Posté le 18-05-2005 à 16:42:01
non, à mon avis c'est dans l'autre sens !
Marsh Posté le 18-05-2005 à 16:44:26
Pourtant c'est bien ce qui se passe chez moi ... dans Environnement j'utilise en aucun cas une instance de GUI ni de MonPanel et pourtant il me met des warning sur ces classes. Pas tres logique je suis d'accord.
Marsh Posté le 18-05-2005 à 17:01:26
Ha ptain je crois que j'ai capté le beug :
Code :
|
Je serialise non pas une instance de Environnement mais une instance de ma HashMap ... je faisais nimp quoi
Marsh Posté le 18-05-2005 à 17:04:42
Peut on dire directement qu'une HashMap (et tout ce qu'il y a dedans) peut etre serializable ?
Marsh Posté le 18-05-2005 à 17:12:36
Bon ca marche au top sauf que j'ai toujours les warnings
Marsh Posté le 18-05-2005 à 17:15:40
oui, si toutes ses clefs et toutes ses valeurs le sont.
Marsh Posté le 18-05-2005 à 17:20:39
http://java.sun.com/j2se/1.5.0/doc [...] zable.html
Citation : However, it is strongly recommended that all serializable classes explicitly declare serialVersionUID values, since the default serialVersionUID computation is highly sensitive to class details that may vary depending on compiler implementations, and can thus result in unexpected InvalidClassExceptions during deserialization. |
voilou l'explication, ils ont carrément mis un warning dessus maintenant.
Marsh Posté le 18-05-2005 à 17:39:09
nraynaud a écrit : http://java.sun.com/j2se/1.5.0/doc [...] zable.html
|
squand meme moisi, parce que d'un autre coté, faut pas se planter le jour ou on change *effectivement* la classe
Marsh Posté le 18-05-2005 à 17:39:22
ou alors faut utiliser xstream !
Marsh Posté le 18-05-2005 à 17:40:50
/FOU/ /FOU/ /FOU/
Marsh Posté le 18-05-2005 à 17:42:45
c'est tout à fait adapté, ça demande deux lignes de code, et ça marche tout de suite.
Marsh Posté le 18-05-2005 à 17:46:35
il faut que je teste, parce que là je suis au taquet avec la sérialization de base /o\
Marsh Posté le 18-05-2005 à 14:11:05
Salut, j'ai une classe Environnement :
Ca compile nikel sauf que j'ai des warnings que je pige pas comment les eviter :
Environnement.java:7: warning: [serial] serializable class Environnement has no
definition of serialVersionUID
public class Environnement implements Serializable{
^
GUI.java:20: warning: [serial] serializable class GUI has no definition of seri
lVersionUID
public class GUI extends JFrame// implements Runnable
Une idée svp ?
D'ailleurs ma classe GUI n'implemente meme pas Serializable
Message édité par Chronoklazm le 18-05-2005 à 14:11:59
---------------
Scheme is a programmable programming language ! I heard it through the grapevine !