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

  FORUM HardWare.fr
  Programmation
  Java

  Serialization et ClassCastException

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Serialization et ClassCastException

n°1082861
Loizo
Posté le 13-05-2005 à 23:07:24  profilanswer
 

Bonjour,
 
Je suis en train de créer une application manipulant des JTree. J'ai crée un type de noeud spécifique contenant une étique et une String associé (une description). Cette classe appellé ContentNode implemente MutableTreeNode. Je serialize ensuite cette objet pour récupérer mon arbre dans un applet afin de visualiser ses noeuds et leurs descriptions associées. Voici le code :
 

Code :
  1. public void valueChanged(TreeSelectionEvent e) {
  2.  //On récupere le noeud sélectionné par l'utilisateur
  3.  currentNode = e.getNewLeadSelectionPath();
  4.  //Affiche la page html du noeud courant
  5.  if(currentNode != null) {
  6.   MutableTreeNode noeud = (MutableTreeNode)currentNode.getLastPathComponent();
  7.   System.out.println("noeud : "+noeud.getClass()); //Retourne bien ContentNode
  8.                         //J'affiche le String associé au noeud cliqué
  9.   Editeur.setText(((ContentNode)noeud).getSiteHtml());
  10.  }
  11. }


 
la ligne  
 

Code :
  1. Editeur.setText(((ContentNode)noeud).getSiteHtml());


 
retourne une erreur :

Code :
  1. java.lang.ClassCastException
  2.    at client.AppletTree.valueChanged(AppletTree.java:147)
  3.    at javax.swing.JTree.fireValueChanged(Unknown Source)
  4.    at javax.swing.JTree$TreeSelectionRedirector.valueChanged(Unknown Source)
  5.    at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(Unknown Source)
  6.    at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(Unknown Source)
  7.    at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(Unknown Source)
  8.    at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(Unknown Source)
  9.    at javax.swing.JTree.setSelectionPath(Unknown Source)
  10.    at javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(Unknown Source)
  11.    at javax.swing.plaf.basic.BasicTreeUI$MouseHandler.handleSelection(Unknown Source)
  12.    at javax.swing.plaf.basic.BasicTreeUI$MouseHandler.mousePressed(Unknown Source)
  13.    at java.awt.AWTEventMulticaster.mousePressed(Unknown Source)
  14.    at java.awt.Component.processMouseEvent(Unknown Source)
  15.    at java.awt.Component.processEvent(Unknown Source)
  16.    at java.awt.Container.processEvent(Unknown Source)
  17.    at java.awt.Component.dispatchEventImpl(Unknown Source)
  18.    at java.awt.Container.dispatchEventImpl(Unknown Source)
  19.    at java.awt.Component.dispatchEvent(Unknown Source)
  20.    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
  21.    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
  22.    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
  23.    at java.awt.Container.dispatchEventImpl(Unknown Source)
  24.    at java.awt.Component.dispatchEvent(Unknown Source)
  25.    at java.awt.EventQueue.dispatchEvent(Unknown Source)
  26.    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
  27.    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
  28.    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
  29.    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
  30.    at java.awt.EventDispatchThread.run(Unknown Source)


 
En gros je ne peux convertir mon MutableTreeNode (le noeud courant) en un ContentNode.
Pour etre sur voici l'entete de ma classe ContentNode :
 

Code :
  1. public class ContentNode implements MutableTreeNode, Serializable {


 
Le pire étant que j'ai exactement le meme code non pas dans un Applet mais dans un JPanel et la aucune erreur tout se passe bien...
Il y a peut etre un probleme avec ma sérialization...
 
Si quelqu'un voit ca serai super ! Merci :jap:


Message édité par Loizo le 14-05-2005 à 16:16:25
mood
Publicité
Posté le 13-05-2005 à 23:07:24  profilanswer
 

n°1083117
Loizo
Posté le 14-05-2005 à 13:05:53  profilanswer
 

Il n'y a aucune cas spécial quand on utilise la sérialization avec un applet ?

n°1084075
Loizo
Posté le 15-05-2005 à 12:50:50  profilanswer
 

A priori ca n'inspire personne... :/

n°1084320
benou
Posté le 15-05-2005 à 16:51:05  profilanswer
 

ben déjà ca a rien à voir avec la sérialisation ton problème ... c'est juste un problème de cast ...
 
par contre, je ne vois pas où est l'erreur, si noeud.getClass() te retournes bien la Class ContentNode, il n'y a aucune raison que tu ne puisse pas caster noeud en ContentNode ...


---------------
ma vie, mon oeuvre - HomePlayer
n°1084325
Loizo
Posté le 15-05-2005 à 16:54:05  profilanswer
 

Bah ouais c'est ca le truc dingue.
Et si je pense que c'est lié a la serialization car a la base je crée un arbre dans la méthode init() de l'applet, la je peux cliquer sans probleme. Apres je fais Fichier >>> Ouvrir et j'importe un arbre deja crée. Et la ca plante au cast donc a priori c'est en utilisant l'objet serializé que ca foire.  
 
Le truc c'est que l'objet est enregistré dans un autre programme (un panneau admin en gros ou je crée l'arbre...) et je le récupere dans l'applet. Donc peut etre que l'objet serializé que je recupere n'est utilisable que dans la partie admin (car c'est le meme code et ca marche) mais je ne comprend pas pourquoi... ??

n°1084331
benou
Posté le 15-05-2005 à 16:58:00  profilanswer
 

c'est les mêmes fichiers .class pour ton applet et ton administrateur ? la classe a pas été recompilée après coup ?


Message édité par benou le 15-05-2005 à 17:01:18

---------------
ma vie, mon oeuvre - HomePlayer
n°1084378
nraynaud
lol
Posté le 15-05-2005 à 17:40:49  profilanswer
 

un problème de classloader ?


---------------
trainoo.com, c'est fini
n°1084380
Loizo
Posté le 15-05-2005 à 17:41:58  profilanswer
 

Je travaille avec Eclipse et j'ai un repertoire contenant tout les fichiers Admin donc ContentNode.class et dans ce répértoire un autre répertoire Client dans lequel j'ai toute les classes du Client (l'Applet et tout) et j'ai recrée une classe ContentNode (donc j'ai un ContentNode.class dans ce dossier aussi) et Eclipse m'a crée autmoatiquement un package client (au début de chacune de mes classes Client).
 
Ca pourrai venir de la ?

n°1084382
Loizo
Posté le 15-05-2005 à 17:42:33  profilanswer
 

classloader ?
J'ai vu ca en faisant des recherches sur Google, ca veut dire quoi ?


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

  Serialization et ClassCastException

 

Sujets relatifs
ClassLoaders et ClassCastExceptionProblème de sérialization
sqlite / serialization / utilisation BLOB[Java]ClassCastException
[JAVA/XML]Serialization d'un document XMLmfc et serialization de Cstring en vc++
Serialization de thread 
Plus de sujets relatifs à : Serialization et ClassCastException


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)