Charger une classe avec forName
Bonjour,
Mon prof de licence nous à montrer et donner un code pour nous donner un exemple de la réflexion que je n'arrive pas à refaire fonctionner (malgré ma réflexion, haha :aie:)
Dans un même dossier j'ai :
Test.class
Test.java
TestReflexion.java
Voici le contenu de mon fichier TestReflexion.java :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| package testreflexion;
import java.lang.reflect.*;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Leinox
*/
public class TestReflexion {
private Class<?> cl;
private Method[] lesM;
public TestReflexion(String className) {
try {
cl = Class.forName(className);
} catch (ClassNotFoundException ex) {
Logger.getLogger(TestReflexion.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.out.println(args[0]);
// TestReflexion testReflexion = new TestReflexion(args[0]);
TestReflexion testReflexion = new TestReflexion("Test");
}
} |
Et voici ce qu'on me retourne :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| run:
Test
mars 08, 2015 9:57:01 PM testreflexion.TestReflexion <init>
GRAVE: null
java.lang.ClassNotFoundException: Test
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:259)
at testreflexion.TestReflexion.<init>(TestReflexion.java:18)
at testreflexion.TestReflexion.main(TestReflexion.java:30) |
Je ne comprend pas. Comment indiquer à Class.forName l'endroit où chercher ma classe Test ? Pouvez vous m'aider svp ?