我想從java應用程序執行外部jar。優雅的方式來檢查外部長期jar是否成功啓動
什麼是最優雅的方式來檢查,如果該過程已成功運行開始了嗎?
ExtApp.jar是長期運行的過程,所以我不能使用Process.waiFor()
,因爲它會阻止我的應用程序。我想出了以下代碼,後面的想法是exitValue()
拋出IllegalThreadStateException
如果進程尚未終止。
boolean success = false;
try {
Process process = Runtime.getRuntime().exec("java -jar ExtApp.jar");
try {
if (process.exitValue() == 0)
success = true;
} catch (IllegalThreadStateException e) {
success = true;
}
} catch (Exception e) {}
System.out.println(success);
但它是一種醜陋的解決方案。任何更好的想法?
你說得對。有一個計時問題。如果使用調試器檢查代碼並且ExtApp.jar不存在,則顯示「false」,如果不是從調試器運行,則顯示爲「true」。 –
對,這就是我的意思,時間和時間並不高雅,因爲在做出決定之前你永遠不知道要等多久 –