J'ai aussi trouvé quelque chose qui semble fonctionner. J'ai écrit une classe "MyClassB" dont le *.class se trouve dans F:\MonDossier et j'exécute ceci :
URL[] urls = new URL[]{new URL("file:\\F:\\MonDossier\")};
ClassLoader cl = new URLClassLoader(urls);
Class cls = cl.loadClass("MyClassB");
Object instB = cls.newInstance();
"instB" contient bien une instance de ma classe.
Pour ce qui est de la réflexion Pylouq, tu peux jeter un oeil aux sites parlant d'introspection ou de réflexivité.
Tu as plusieurs moyen d'instancier une classe...
Soit directement avec le new.... soit ClassLoader.getSystemClassLoader().loadClass(...).newInstance() où tu donnes la classe à instancier (org.xxx.A par exemple) ou encore Class.forName("org.xxx.A").newInstance()
Attention que pour les deux dernières, le constructeur par défaut doit exister.
Il y a peut-être d'autre moyen, mais comme ça il ne me vienne pas à l'esprit...
J'ai cherché du côté de la réflexion mais sans succès.
Réflexion ? C'est à dire ?
Personnellement, j'ai déjà été amené à faire quelque chose de très similaire, et je suis passé par le deuxième façon de faire dite par cormandyr .
Au final, ça donnait quelque chose comme ça :
La différence avec ce que tu veux, c'est que là je passe un chemin avec un nom de classe, et non pas le fichier .class lui même. De mémoire, je crois qu'en paramètre c'est le nom du .class et .java. Essaye de cette façon et donne nous des nouvelles.
--
Pylouq (Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)