Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1327 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Comment eviter une exception de serialVersionUID ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment eviter une exception de serialVersionUID ?

n°1087829
Chronoklaz​m
Posté le 18-05-2005 à 14:11:05  profilanswer
 

Salut, j'ai une classe Environnement :
 

Code :
  1. public class Environnement implements Serializable{


 
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  :heink:


Message édité par Chronoklazm le 18-05-2005 à 14:11:59

---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
mood
Publicité
Posté le 18-05-2005 à 14:11:05  profilanswer
 

n°1087851
nraynaud
lol
Posté le 18-05-2005 à 14:23:25  profilanswer
 

toutes les variables d'instance non-transient doivent être sérialisables aussi.
 
google > serialization+tutorial+java


---------------
trainoo.com, c'est fini
n°1087969
Chronoklaz​m
Posté le 18-05-2005 à 15:14:40  profilanswer
 

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 ..


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1087979
nraynaud
lol
Posté le 18-05-2005 à 15:19:13  profilanswer
 

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.


---------------
trainoo.com, c'est fini
n°1088114
Chronoklaz​m
Posté le 18-05-2005 à 16:21:26  profilanswer
 

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 ??!!


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1088133
nraynaud
lol
Posté le 18-05-2005 à 16:42:01  profilanswer
 

non, à mon avis c'est dans l'autre sens !


---------------
trainoo.com, c'est fini
n°1088138
Chronoklaz​m
Posté le 18-05-2005 à 16:44:26  profilanswer
 

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.


Message édité par Chronoklazm le 18-05-2005 à 16:44:56

---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1088155
Chronoklaz​m
Posté le 18-05-2005 à 17:01:26  profilanswer
 

Ha ptain je crois que j'ai capté le beug :
 

Code :
  1. // Environnement.java
  2. import java.io.*;
  3. import java.util.*;
  4. public class Environnement implements Serializable{
  5. public static Map<String, Object> memoire = new HashMap<String,Object>();
  6. //static final long serialVersionUID = 42L;  
  7. public Environnement(){
  8. }
  9. public static void sauverEnv(String nomFichier){
  10.  try {
  11.   FileOutputStream fichier = new FileOutputStream(nomFichier);
  12.   ObjectOutputStream oos = new ObjectOutputStream(fichier);
  13.   oos.writeObject(memoire);
  14.   oos.flush();
  15.   oos.close();
  16.  }
  17.  catch (java.io.IOException e) {
  18.   e.printStackTrace();
  19.  }
  20.  finally{
  21.   System.out.println("Environnement sauvegarde avec succes !" );
  22.  }
  23. }
  24. public static void chargerEnv(String nomFichier){
  25.  try {
  26.   FileInputStream fichier = new FileInputStream(nomFichier);
  27.   ObjectInputStream ois = new ObjectInputStream(fichier);
  28.   memoire = (HashMap<String, Object> )ois.readObject();
  29.   ois.close();
  30.  }
  31.   catch (java.io.IOException e) {
  32.   e.printStackTrace();
  33.  }
  34.   catch (ClassNotFoundException e) {
  35.   e.printStackTrace();
  36.  }
  37.  finally{
  38.   System.out.println("Environnement charge avec succes !" );
  39.  }
  40. }
  41. }


 
Je serialise non pas une instance de Environnement mais une instance de ma HashMap ... je faisais nimp quoi :/


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1088161
Chronoklaz​m
Posté le 18-05-2005 à 17:04:42  profilanswer
 

Peut on dire directement qu'une HashMap (et tout ce qu'il y a dedans) peut etre serializable ?


Message édité par Chronoklazm le 18-05-2005 à 17:08:38

---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1088194
Chronoklaz​m
Posté le 18-05-2005 à 17:12:36  profilanswer
 

Bon ca marche au top sauf que j'ai toujours les warnings


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
mood
Publicité
Posté le 18-05-2005 à 17:12:36  profilanswer
 

n°1088199
nraynaud
lol
Posté le 18-05-2005 à 17:15:40  profilanswer
 

oui, si toutes ses clefs et toutes ses valeurs le sont.


---------------
trainoo.com, c'est fini
n°1088208
nraynaud
lol
Posté le 18-05-2005 à 17:20:39  profilanswer
 

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.


---------------
trainoo.com, c'est fini
n°1088231
the real m​oins moins
Posté le 18-05-2005 à 17:39:09  profilanswer
 

nraynaud a écrit :

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.


squand meme moisi, parce que d'un autre coté, faut pas se planter le jour ou on change *effectivement* la classe :/


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1088232
the real m​oins moins
Posté le 18-05-2005 à 17:39:22  profilanswer
 

ou alors faut utiliser xstream ! [:klem3i1]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1088234
nraynaud
lol
Posté le 18-05-2005 à 17:40:50  profilanswer
 

/FOU/ /FOU/ /FOU/


---------------
trainoo.com, c'est fini
n°1088239
the real m​oins moins
Posté le 18-05-2005 à 17:42:45  profilanswer
 

c'est tout à fait adapté, ça demande deux lignes de code, et ça marche tout de suite.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1088245
nraynaud
lol
Posté le 18-05-2005 à 17:46:35  profilanswer
 

il faut que je teste, parce que là je suis au taquet avec la sérialization de base /o\


---------------
trainoo.com, c'est fini

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Comment eviter une exception de serialVersionUID ?

 

Sujets relatifs
[HTML] Obfuscation d'emails - éviter le spam [résolu]Jasper Exception
[JS]Le SP2 bloque mon script comment eviter sa?[MySQL] Comment éviter une requete de type : Select ... Where .. IN .?
[MFC] recherche de nom de fonction pour éviter le clipping[JAVA] WSAD 5 + Tomcat : éviter les redémarrages à chaque modif…
Mac Explorer et CSS : éviter la déformation lié a un texte trop longcomment créer une exception ? [resolu]
[ORACLE] Exception ou requetes pour les éviter 
Plus de sujets relatifs à : Comment eviter une exception de serialVersionUID ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR