[ClassLoader][Cast] pb de cast - 2 ClassLoader différents

pb de cast - 2 ClassLoader différents [ClassLoader][Cast] - Java - Programmation

Marsh Posté le 13-05-2004 à 11:45:40    

Bonjour,  
 
J'ai un pb de classcastexception du au chargement de mes classes par deux ClassLoader différents.  
 
Je construis une variable de type RefPackage et je veux la caster en un type IdsPackage (qui étend de RefPackage bien sûr). La construction se fait bien, l'objet retourné est bien de type IdsPackage.  
Code:  
 
s_LTGumlPackage = (IdsPackage) t_umlPackage;  
 
 
Le pb vient du fait que la classe de cette variable construite (t_umlPackage) est chargée par un ClassLoader Netbeans (gestion de mdr) la classe de la variable s_LTGumlPackage est chargée par un ClassLoader différent (plugin Poseidon que je développe dans ce cas).  
 
J'ai essayé de mettre dans le classpath le jar correspondant à ce plugin Poseidon, mais ça ne change rien.  
 
Je vois pas trop comment faire pour unifier tout ça  :??:

Reply

Marsh Posté le 13-05-2004 à 11:45:40   

Reply

Marsh Posté le 13-05-2004 à 12:22:37    

tu ne peux pas ...
 
il faut soit que tu unifies les classloader (faire que l'un soit fils de l'autre ...), soit que tu fasses de l'invocation dynamique ...
 
mais bon, c'est bizarre ton histoire de classloader différents. C'est très rare ce genre de problème et ca ne devrait pas se produire en principe. Le seul cas que j'ai rencontré c'était dans les serveurs d'applications avec les classloader dédiés à chaque web-app, mais dans un programme normal, logiquement tu ne dois pas être emmerdé avec ca ... faudrait peut être que tu revois le design de ton truc ...

Reply

Marsh Posté le 13-05-2004 à 14:23:44    

à vrai dire, je comprends pas trop non plus comment je me retrouve avec 2 classloader...
 
le premier est en fait :

Code :
  1. org.netbeans.mdr.handlers.MDRClassLoader


 
et le second :

Code :
  1. org.argouml.util.pluginPoseidonModuleItem


avec en parent pour les deux sun.misc.Launcher (AppClassLoader)
 
 
En fait, sur des tests unitaires, tout se passe bien, c'est au moment de l'appli en tant que plugin que ça ne marche plus.
 
En plus, en mettant le jar correspondant au plugin dans le classpath, j'aurais pensé résoudre le pb, mais je comprends pas pourquoi rien a changé...
 
Il existe une méthode pour récupérer l'ensemble des classes chargées par un classLoader? histoire de voir ce que chacun d'entre eux contient...

Reply

Marsh Posté le 13-05-2004 à 15:30:15    

bon, en fait je comprends pourquoi le classpath ne change rien :  
au lancement de Poseidon, il l'écrase pour mettre son bordel à lui...
 
Si je fais un setProperty("java.class.path", classPathPoseidon + monClassPath), je vois qu'il concatène bien les paths, mais est ce qu'il le recharge vraiment "dynamiquement"?

Reply

Marsh Posté le 15-05-2004 à 05:52:37    

squall36 a écrit :

est ce qu'il le recharge vraiment "dynamiquement"?


non

Reply

Sujets relatifs:

Leave a Replay

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