J'écris un programme Java qui exécute un fichier cmd à un moment donné. Les deux sont dans le même répertoire. J'utilise ProcessBuilder, car il est plus flexible. Cependant quand je lance ce code, il échoue:Java exécuter le fichier cmd échoue
String current_directory = System.getProperty("user.dir");
ProcessBuilder builder=new ProcessBuilder(current_directory+"\\"+ "myCmdFile.cmd");
builder.directory(new File(current_directory));
File log = new File("log.txt");
builder.redirectErrorStream(true);
builder.redirectOutput(Redirect.appendTo(log));
Process process=builder.start();
process.waitFor();
System.out.println("CMD file executed");
Je reçois cette exception:
java.io.IOException: Cannot run program "C:\test\myCmdFile.cmd" (in directory "C:\test"): No such file or directory
at java.lang.ProcessBuilder.start(Unknown Source)
at org.java.test.executeCmdFile(MyMainClass.java:189)
at org.java.test.main(MyMainClass.java:70)
Caused by: java.io.IOException: No such file or directory
at java.lang.ProcessImpl.openForAtomicAppend(Native Method)
at java.lang.ProcessImpl.newFileOutputStream(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 3 more
Cependant, quand je commente ces lignes que cela fonctionne:
ProcessBuilder builder=new ProcessBuilder(current_directory+"\\"+
"myCmdFile.cmd");
//builder.directory(new File(current_directory));
//File log = new File("log.txt");
// builder.redirectErrorStream(true);
// builder.redirectOutput(Redirect.appendTo(log));
Process process=builder.start();
process.waitFor();
System.out.println("CMD file executed");
J'ai besoin ces lignes, puisque je veux avoir des messages de journal.
Est-ce que current_directory contient un chemin absolu ? –
@Alexander ouais, sry, j'ai oublié cette ligne (j'ai édité ma question). – Norbert94
Désolé, on dirait que j'ai besoin d'un café. – GhostCat