Javaアプリから外部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);
しかし、それは一種の醜い解決策です。より良いもののためのアイデアはありますか?