Salut à tous,

J'essaie de charger des classes à partir du code binaire (.class) avec un ClassLoader dans le but d'extraire quelques informations concernant les classes (attributs, méthodes, héritages, interfaces ...).

J'arrive bien à Loader les classes, trouver la signature des attributs et méthodes, mais le problème qui arrive est le suivant:
Disons que j'ai chargé une classe Classe1 avec mon ClassLoader et que cette classe implémente l'interface Interface1, voici ce que je fais pour retrouver les interfaces que Classe1 implémente:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Class classe1 = monClassLoader.loadClassFromFile(
path, name); // fonctionne bien
mais quand j'essaie d'extraire les interfaces avec:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Type[] iTypes = classe1.getGenericInterfaces();
ce qui arrive ici est que Interface1 n'est pas reconnu par le ClassLoader original mais seulement par mon ClassLoader (puisqu'elle ne fait pas partie du classpath) et donc quand j'appelle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Type[] iTypes = classe1.getGenericInterfaces();
celle ci déclenche une exception parce qu'elle ne connaît pas Interface1.

Est ce qu'il y a un moyen de charger Interface1 et faire en sorte qu'elle soit reconnu comme si elle fesais partie du classpath ?

Merci !