Bonjour tout le monde
voici mon probleme, j'execute le code suivant et j'obtient une levee d'exception IllegalArgumentException
En gros, dans mon fichier librairie j'ai une classe maClasse qui a une methode treat(IClass c) qui gere donc des objets qui implementent l'interface IClass.
J'ai un objet classA qui implemente cette interface.
J'ai besoin, grace au systeme de reflection, de faire appel dynamiquement a ma methode treat en lui passant en parametre une instance de ma classe classA.
Voila le code d'appel de ma methode
voici en gros le code de la methode treat :
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 // on ouvre la librairie URL chemins[] = { new URL("file:/C:/classes/maLibrairie.jar") }; URLClassLoader loader = new URLClassLoader(chemins); Class o = loader.loadClass("fr.Librairie.maClasse"); // on instancie un objet classA classA cl = new classA(); // on prepare l'appel a la methode treat en fixant les parametres Class[] paramTypes = null; paramTypes = new Class[1]; paramTypes[0] = classA.class; // on cherche la methode treat Method m = o.getMethod("treat",paramTypes); // on prepare les parametres de la methode treat Object[] args = new Object[1]; args[0] = cl; // on appel la methode treat result = m.invoke(o,args);
et voici ma classe classA
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class maClasse { public boolean treat(IClass cl) { ...; } }
donc voila, tout marche bien jusqu'a l'appel de la methode ou j'ai cette levee d'exception. je comprend pas trop et apres avoir chercher sur le forum j'ai trouver une discussion peut etre similaire mais j'en suis pas sur : discussion
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public class classA implements IClass { classA() { ....; } ...; }
donc si quelqu'un pouvait m'expliquer pourquoi l'exception est levee
d'avance merci
Partager