2014-09-22 6 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()); 
    } 
} 

Ich lernte, wie Systembefehle in Java ausgeführt werden, und dieser Fehler trat auf. Ich habe versucht, Würfe zu verwenden, um es zu negieren, aber es war nutzlos. Bitte legen Sie den Grund und LösungDie IllegalThreadStateException behandeln

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) 

Antwort

9

Invoke Process#waitFor() bevor versuchen, den Ausgang Wert zu erhalten. Dies blockiert den aktuellen Thread, bis der erzeugte Prozess beendet wird. Wenn Sie dies nicht tun, wirft Process#exitValue()

IllegalThreadStateException - wenn der Subprozess dieses Process Objekt dargestellt wird noch nicht beendet

Verwandte Themen