Bonjour,
Je suis entrain de mettre en place un système de serialisation et j'ai quelques problemes lors de la deserialisation.
Lorsque je serialise mon objet j'enregistre une ArrayList d'object de type MesureAttenuante. Cependant chaque objet n'est pas directement du type MesureAttenuante mais en hérite (car j'ai un systeme de plugin derrière donc de cette manière je n'ai pas besoin de connaitre le code de chaque classe, le code de ma classe abstraite suffit).
La serialisation de mon objet ne pose pas de probleme cependant lorsque j'essaye de le déserialiser j'ai une erreur ClassNotFound
Au début je me suis dit que c'etait normal car je n'avais pas la classe MesureFirewall (qui herite de MesureAttenuante). Donc j'ai redéfini la fontion readObject comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 java.lang.ClassNotFoundException: plugin.mesureAttenuante.mehari.MesureFirewall at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at java.io.ObjectInputStream.resolveClass(Unknown Source) at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) at java.io.ObjectInputStream.readClassDesc(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at mehari.ActionLiee.readObject(ActionLiee.java:173) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at java.io.ObjectStreamClass.invokeReadObject(Unknown Source) at java.io.ObjectInputStream.readSerialData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at mehari.ActionLiee.load(ActionLiee.java:128) at test.Test.main(Test.java:58) Exception in thread "main" java.lang.NullPointerException at test.Test.main(Test.java:59)
De cette manière je pensais casté mon object selon ma classe MesureAttenuante mais apparemment cela ne change rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 private void readObject(java.io.ObjectInputStream in) throws IOException,ClassNotFoundException { in.defaultReadObject(); int nb = in.readInt(); lesMesuresAttenuantes = new ArrayList<MesureAttenuante>(); for(int i=0;i<nb;i++){ MesureAttenuante ma = (MesureAttenuante) in.readObject(); lesMesuresAttenuantes.add(ma); }
Quelqu'un saurait comme je pourrais caster les objets que je lis comme objets MesureAttenuante et non plus comme objet héritant de MesureAttenuante ?
Partager