Bonjour,
J'utilise Eclipse et je n'ai aucun problème quand il faut ajouter un jar, .. dans le classpath. Mais j'aimerai le faire dynamiquement dans le code. En fait j'ai un projet dans lequel je génère un fichier java, puis je compile dans le souci de l'utiliser (Class c = Class.forName(MaClasse))
- je crée mon fichier java sans problème
- je compile avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
try {
// chemin = chemin d'accès à ma classe générée
Process proc = Runtime.getRuntime().exec("javac -cp \""+System.getProperty("java.class.path")+"\" "+chemin+"\\MaClasse.java");
}
catch(IOException ex) {
System.out.println("Imposible d'executer la commande"); 
}
Après compilation, le .class est bien généré et il me faut donc mettre le chemin "chemin" dans le classpath avant d'utiliser ma classe. Je le fais comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
String cp = System.getProperty("java.class.path");
System.setProperty("java.class.path", cp+";"+chemin);
String cp2 = System.getProperty("java.class.path");
System.out.println("Claspath final = "+cp2);
Mon classpath final s'affiche bien incluant le nouveau chemin, mais quand je fais un forName() sur cette classe générée, l'exception suivante survient :
Exception in thread "main" java.lang.ClassNotFoundException: BridgeServerImpl
at java.net.URLClassLoader$1.run(Unknown Source)
Pourtant, quand j'ajoute ce chemin au classpath explicitement dans eclipse, cela fonctionne bien.
je ne sais ce qui se passe.
Merci