Bonjour la compagnie,
J'ai vraiment du mal avec NetBeans et son utilisation du(des) ClassLoader.
Je vous explique mon soucis:
- J'ai un module A qui définit une classe appelons la "Mere".
- Dans "Mere" il y a une méthode pour charger dynamiquement une classe a partir de son nom stocké dans le fichier de conf passé en argument
- J'ai un module B qui a une dépendance sur A, dans B un classe appelons la "Fille" qui hérite de "Mere".
- "Fille" appelle la méthode de "Mere" en lui passant le nom du fichier de conf a charger
- Le fichier de conf contient le nom d'une classe du module B
Problème a l'exécution j'ai une ClassNotFoundException, la cerise sur le gâteau c'est que dans mes logs (avec log4j) j'ai un log de la classe "Fille" qui me dit ClassNotFound concernant une classe pourtant dans le même jar
Ce que j'en déduis c'est que NetBeans a un ClassLoader différent pour la classe "Mere" et la classe "Fille" et que probablement il n'existe pas de liens entre eux ce qui fait qu'une méthode appelée directement sur une instance de "Fille" ne s'exécutera pas de la même façon suivant qu'elle est définie dans "Fille" ou dans "Mere" avec code identique
N'hésitez pas a me reprendre si je me trompe mais c'est ce que je constate pour le moment ..
Il y a une solution degueu, a savoir passer le ClassLoader de "Fille" en paramètre de super dans le constructeur et d'utiliser ce ClassLoader pour tout charger dans "Mere" ...
Sinon histoire de ne pas mourir idiot, quelqu'un a une idée du pourquoi du comment ils ont fait ce genre de choses ?
Parce que le RCP est vraiment pratique en terme de programmation modulaire mais si un simple héritage fait que "Mere" et "Fille" tourne dans des environnement différents, on va dans le mur c'est sur ..
Bulbo![]()
Partager