Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java.io.IOException: Cannot run program "dir": CreateProcess error=2, Das System

Hello I try to run the following cmd code in eclipse:

 "DIR \""+DEV_HOME+"\\src\"\\*.java /b /s >> \""+DEV_HOME+"\\bin\\javaFiles.txt\""

In clear it looks like this:

DIR "D:\Thomas\Dokumente\Daten\workspace\WBRLight\src"\*.java /b /s >> "D:\Thomas\Dokumente\Daten\workspace\WBRLight\bin\javaFiles.txt"

But I get following error message:

java.io.IOException: Cannot run program "dir": CreateProcess error=2, Das System kann die angegebene Datei nicht finden
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)
at java.lang.Runtime.exec(Runtime.java:617)
at java.lang.Runtime.exec(Runtime.java:450)
....

When I try to use the code in the cmd box, Its working fine. My code:

    public void run_cmdLine(String command) {
    try {
        Runtime rt = Runtime.getRuntime();
        BufferedReader input = null;
        Process pr = null;

        pr = rt.exec(command);
        input = new BufferedReader(new inputStreamReader(pr.getInputStream()));

        String line = null;

        while ((line = input.readLine()) != null) {
            System.out.println(line);
        }

        int exitVal = pr.waitFor();
        System.out.println("Exited with error code " + exitVal);

    } catch (Exception e) {
        System.out.println(e.toString());
        e.printStackTrace();
    }
}
like image 804
user2889693 Avatar asked Jan 22 '14 11:01

user2889693


1 Answers

Add "cmd.exe /c" at the beginning of your command string, that should do the trick.

The /c parameter will make the cmd finish and return it to the Java process.
Without it, the process will hang.

like image 106
jeroen_de_schutter Avatar answered Nov 12 '22 09:11

jeroen_de_schutter