2012-10-15 12 views
7

Ich versuche, ein Java-Programm von einem anderen Java-Programm auszuführen mit Runtime.getRuntime() execjava.io.IOException:. Fehler = 2, keine solche Datei oder das Verzeichnis

Code:

String java_home = System.getenv("JAVA_HOME"); 
String[] command = {""+java_home+"/bin/java -cp -cp /sc/sug/p-lib/* Tdesigner -cd /pr -in ing.rsp -out /scratch/sug/ng.pla -ad -stopO "}; 
       try { 
        proc = Runtime.getRuntime().exec(command); 
        proc.waitFor(); 
        int exitCode = proc.exitValue(); 
       } catch (IOException e) { 
         e.printStackTrace(); 
       } catch (InterruptedException e) { 
         e.printStackTrace(); 
       } 

Es gibt mir folgende Fehlermeldung:

java.io.IOException: Cannot run program "/net/sl/sc/jdk6/bin/java -cp /sc/sug/p-lib/* Tdesigner -cd /pr -in ing.rsp -out /scratch/sug/ng.pla -ad -stopOnError ": java.io.IOException: error=2, No such file or directory 
      at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) 
      at java.lang.Runtime.exec(Runtime.java:593) 
      at java.lang.Runtime.exec(Runtime.java:466) 

Kann mir jemand helfen, das Problem zu lösen. ist es, dass ich einzelne JAR-Dateien mit -cp hinzufügen muss, anstatt das Verzeichnis zu setzen.

Antwort

2

Wenn Sie exec (String []) verwenden, müssen Sie den Befehl und seine Argumente in separaten Array-Elementen bereitstellen, nicht alle in einem, wie Sie es getan haben.

+0

String [] Befehl = {"" + java_home + "/ bin/java -cp/sc/sug/p-lib/* Tdesigner", "-cd", "/ pr", "-in", "ing .rsp "," -out "," /scratch/sug/ng.pla "," - ad "," -stopO "}; Modified der Befehl immer noch den gleichen Fehler. :( – user1731553

+1

Sie haben immer noch die java -cp /sc/.../* Tdesigner als alle eine Zeichenfolge, muss es getrennt werden. Sonst, anstatt java aufrufen und übergeben Sie die Argumente - cp usw., Sie versuchen, ein Programm zu starten * genannt * java -cp/sc/... –

3

Versuchen Sie, die zusätzlichen -cp von dem Befehl String-Array entfernen und einzelne Tokens in dem Array verwenden:

String[] command = { java_home + "/bin/java", "-cp", 
    "/sc/sug/p-lib/*", "Tdesigner", "-cd", "/pr", "-in", "ing.rsp", 
    "-out", "/scratch/sug/ng.pla", "-ad", "-stopO" }; 
0

I scala verwenden. Hier ist mein Code:

Runtime.getRuntime.exec(Array("/bin/bash", "-c", #your_command)).waitFor() 

Ich denke, es ist einfach für andere zu verstehen, die Java verwenden.

Verwandte Themen