OVH Cloud OVH Cloud

newInstance & super class

1 réponse
Avatar
Samos
Salut à tous,

Bon voilà mon problème, j'ai une appli en local qui charge un jar depuis un
serveur web, voici le bout de code :

URL jarfile = new URL("http://leserver/jarname.jar");
URLClassLoader cl = URLClassLoader.newInstance(new URL[] { jarfile});
Class loadedClass = cl.loadClass(jarname);
Constructor c = loadedClass.getConstructor(new Class[] {Component.class});
TheClass myObj = (TheClass)c.newInstance(this);

J'utilise un constructeur pour passer le parametre (this).

Mon probleme est que ma classe à charger est une classe dérivée d'une classe
se trouvant au niveau de mon appli, donc j'ai droit à un :

java.lang.IllegalAccessError class TheClass cannot access its superclass
TopTheClass

Donc voilà, je voudrais savoir comment ma classe TheClass peut dériver de
TopTheClass, sans l'intégrer au jar évidemment.

Merci à vous,

Samos

1 réponse

Avatar
Thomas Escolan
Première petite chose, c'est un tableau d'objets qu'attend newInstance(),
même si dans ton cas ce tableau ne contient qu'un élément.
Ensuite, tu as déclaré au-dessus que ton constructeur attend un Component,
pas TopTheClass.
A mon humble avis, tu mélanges les arguments du constructeur avec la classe
que tu souhaites instancier.

Enfin, si ton problème est ce que tu dis, il suffit (hum) que la classe de
this étende TopTheClass... Tu peux hériter de ta classe à toi (Component ?)
par composition !

"Samos" a écrit dans le message de news:
4325e409$0$14847$
Salut à tous,

Bon voilà mon problème, j'ai une appli en local qui charge un jar depuis
un
serveur web, voici le bout de code :

URL jarfile = new URL("http://leserver/jarname.jar");
URLClassLoader cl = URLClassLoader.newInstance(new URL[] { jarfile});
Class loadedClass = cl.loadClass(jarname);
Constructor c = loadedClass.getConstructor(new Class[] {Component.class});
TheClass myObj = (TheClass)c.newInstance(this);

J'utilise un constructeur pour passer le parametre (this).

Mon probleme est que ma classe à charger est une classe dérivée d'une
classe
se trouvant au niveau de mon appli, donc j'ai droit à un :

java.lang.IllegalAccessError class TheClass cannot access its superclass
TopTheClass

Donc voilà, je voudrais savoir comment ma classe TheClass peut dériver de
TopTheClass, sans l'intégrer au jar évidemment.

Merci à vous,

Samos