Bonjour,
J'utilise eclipse et j'ai cree une petite appli de test avec visual editor.
J'essaye de lancer un fichier bat creer avec Talend mais j'ai une erreur au lancement (alors que si je lance un exe pas de pb).
code derriere le bouton
String[] cmd = new String[3]; cmd[0]= "cmd.exe"; cmd[1]= "/C"; cmd[2]= "C:\\ETL\\testpgmjava\\TestPgmJava\\TestPgmJava_run.bat"; Runtime rt = Runtime.getRuntime(); final Process proc2 = rt.exec(cmd);
et voici le massage d'erreur
erreur : java.lang.NoClassDefFoundError: projet_corep/testpgmjava/TestPgmJava
erreur : Caused by: java.lang.ClassNotFoundException: projet_corep.testpgmjava.TestPgmJava
erreur : at java.net.URLClassLoader$1.run(Unknown Source)
erreur : at java.security.AccessController.doPrivileged(Native Method)
erreur : at java.net.URLClassLoader.findClass(Unknown Source)
erreur : at java.lang.ClassLoader.loadClass(Unknown Source)
erreur : at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
erreur : at java.lang.ClassLoader.loadClass(Unknown Source)
erreur : at java.lang.ClassLoader.loadClassInternal(Unknown Source)
erreur : Exception in thread "main"
Voici la ligne de commande du fichier bat generer par Talend
java -Xms256M -Xmx1024M -cp ../lib/jt400.jar;../lib/jxl.jar;../lib/systemRoutines.jar;../lib/userRoutines.jar;.;testpgmjava.jar;../lib; projet_corep.testpgmjava.TestPgmJava --context=Default
Les jar sont bien dans le rep lib et la class est bien dans projet_corep\testpgmjava
Quelqu'un pourrait il m'aider
Merci
Oui
Ton lancement de bat, tu ne le fais pas correctement. Lancer un exe, un bat ou autre en Java se fait selon des règles précises. Ca a été traité au moins 10 fois sur ce forum, y compris récemment, si tu fais des recherches tu vas trouver.
Au strict minimum, il manque
proc2.waitFor();
Mais même avec ça, ça ne fonctionnera probablement pas correctement à moins que ton bat soit extrêment rudimentaire
Mais en attendant
Ca ne peut pas être plus clair. La classe TestPgmJava n'est pas pointée par le CLASSPATH
Il faut croire que non...
Tu as fais une erreur quelque part.
J'ai bien lu le programmez 82, mais....
voici mon code complet
je confirme bien la presence de ma classe, par contre ce pgm java n'est pas dans la meme repertoire que le pgm Talend
je debute alors je crois bien que c'est effectivement un probleme de classpath, comment le resoudre ???
Bravo :)
Quoique tu n'as pas si bien lu que ça, sinon tu aurais mis waitFor() APRES la lancement des threads (comme c'est fait dans Programmez:! 82 ;) ) et non avant.
Si tu mets waitFor() avant ça les threads ne servent à rien du tout et tu auras sans doute un pb à l'exécution.
Mais non.
Mais oui.
Hier j'ai lu rapidement ton post. Sans doute trop :oops:
Donc la classe pas trouvée est cherchée depuis le fichier bat si je comprends.
Et elle est dans testpgmjava.jar
Tu nous racontes que tous les jars sont dans un répertoire lib.
Mais pour testpgmjava.jar, la ligne de commande c'est -cp testpgmjava.jar donc la JVM va chercher le jar dans ce que Eclipse lui dit être le répertoire courant. Je crois que tu as une petite surprise là :)
Si vraiment testgmpjava.jar est dans lib, le mieux est de corriger le script ainsi:
Ah le CLASSPATH....