[java] probleme de serialisation

probleme de serialisation [java] - Java - Programmation

Marsh Posté le 15-02-2003 à 19:24:41    

tout d'abord une photo de mon diagramme de classes
 
http://www.quoimagueule.com/album/zul/photos/2003-2-15-19_21_12.jpg
 
 
quand je serialize mon objet Session, qui contient donc un tableua de dossier, un tab de jury et un tab d'ecoles, tout marche bien
 
quand je deserialize comme ca :  
 

Code :
  1. try{
  2.         ObjectInputStream ois = new ObjectInputStream(new FileInputStream("session.txt" ));
  3.         Session tmp = (Session) ois.readObject();
  4.  }
  5.         catch (java.io.IOException e) {
  6.        e.printStackTrace();
  7.      }
  8.      catch (ClassNotFoundException e) {
  9.         e.printStackTrace();
  10.      }


 
 
si la super classe personne n'a pas de constructeur sans arguments ca me donne :  
 
ca
 

Code :
  1. [cpp]java.io.InvalidClassException: PersonneMissing no-arg constructor for class
  2. at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1350)
  3. at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
  4. at java.io.ObjectInputStream.inputClassFields(ObjectInputStream.java:2263)
  5. at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:519)
  6. at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1412)
  7. at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
  8. at java.io.ObjectInputStream.inputArray(ObjectInputStream.java:1142)
  9. at java.io.ObjectInputStream.readObject(ObjectInputStream.java:374)
  10. at java.io.ObjectInputStream.inputClassFields(ObjectInputStream.java:2263)
  11. at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:519)
  12. at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1412)
  13. at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
  14. at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
  15. at Launch.loadMenu(Launch.java:32)
  16. at StartAppli.main(StartAppli.java:16)


 
ou ca (plus rarement)
 
[/cpp]
 
ou plus rarement :  
 

Code :
  1. java.io.InvalidClassException: Session; Local class not compatible: stream classdesc serialVersionUID=-1030363450047633487 local class serialVersionUID=-6174836046218582669
  2. at java.io.ObjectStreamClass.validateLocalClass(ObjectStreamClass.java:523)
  3. at java.io.ObjectStreamClass.setClass(ObjectStreamClass.java:567)
  4. at java.io.ObjectInputStream.inputClassDescriptor(ObjectInputStream.java:936)
  5. at java.io.ObjectInputStream.readObject(ObjectInputStream.java:366)
  6. at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
  7. at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1186)
  8. at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
  9. at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
  10. at Launch.loadMenu(Launch.java:32)
  11. at StartAppli.main(StartAppli.java:16)


 
et si je colle un constructeur vide ds Personne
du stle
 
Personne()
{}
 
ca plante plus mais ca deserialize rien.
 
qqun aurait une idée ? c'est super important  
merci d'avance
 
 
(je rentrerai tard ds la soirée)


Message édité par ZuL le 15-02-2003 à 19:27:55
Reply

Marsh Posté le 15-02-2003 à 19:24:41   

Reply

Marsh Posté le 15-02-2003 à 19:49:46    

nan mais quel con...tout ca parce que Personne etait pas serializable
mais qué couillon
 
 
bon juste une question alors, comment on recaste un int en char ?
parce que String(1) ca marche pas :/

Reply

Marsh Posté le 15-02-2003 à 23:49:47    

ZuL a écrit :

nan mais quel con...tout ca parce que Personne etait pas serializable
mais qué couillon
 
 
bon juste une question alors, comment on recaste un int en char ?
parce que String(1) ca marche pas :/


 
J'allais le dire (pour Personne)
 
Sinon: Character.forDigit(nombre, 10) (il y a plus simple mais bon...)

Reply

Marsh Posté le 16-02-2003 à 00:00:37    

Euh... pour caster un int en char, c'est tout bête :
int i = 32;
char c = (char) i;
 
Et vala, c est le caractère correspondant au code ASCII 32 (soir espace).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed