2014-09-22 37 views
5
import java.io.*; 
class Sysexecute 
{ 
    public static void main(String args[]) throws IOException,InterruptedException,IllegalThreadStateException 
    { 
     Runtime rt= Runtime.getRuntime(); 
     Process p=rt.exec("ls"); 
     System.out.println(p.exitValue()); 
    } 
} 

我正在學習如何在java中執行系統命令併發生此錯誤。我試圖用拋出否定它,但沒用。請解釋原因和解決辦法處理IllegalThreadStateException

actual error:- 
Exception in thread "main" java.lang.IllegalThreadStateException: process hasn't exited 
    at java.lang.UNIXProcess.exitValue(UNIXProcess.java:270) 
    at Sysexecute.main(Sysexecute.java:8) 

回答

9

在嘗試獲取退出值之前調用Process#waitFor()。這會阻塞當前線程,直到生成的進程終止。如果你不這樣做,Process#exitValue()拋出

IllegalThreadStateException - 如果沒有這個 Process對象表示的子進程尚未終止