2017-06-01 4 views
0

Dieser Code führt zu einem IllegalThreadStateException Laufzeitfehler aus der Zeile mit dem if-Anweisung:Warum erhalte ich einen IllegalThreadStateException-Fehler in ProcessBuilder - Java?

public static void main(String args[]) throws IOException, InterruptedException { 
    Runtime runtime = Runtime.getRuntime(); 
    Process proc = new ProcessBuilder("\"c:\\[directory]/doer.exe\"").start(); 
    if(proc.exitValue() == 1) 
     System.out.println("Output: 1"); 
} 

die ausführbare diese speziell den Exit-Code ausgeführt werden soll, hat 1. Was ich tue, falsch und wie kann ich es beheben ?

+0

Können Sie '" \ "c: \\ [Verzeichnis] ​​\\ doer.exe \" "'? –

Antwort

4

Die javadoc von Prozess # exitValue beschreibt, warum es die Ausnahme auslöst:

https://docs.oracle.com/javase/7/docs/api/java/lang/Process.html#exitValue()

Wirft: IllegalThreadStateException - wenn die Subprozess durch dieses Verfahren Objekt dargestellt wird beendet noch nicht

Verwenden Sie proc.waitFor() vor der If-Anweisung, um zu warten, bis der Prozess abgeschlossen ist.

Verwandte Themen