※ ChatGPTを利用し、要約された質問です(原文:process has not exited)
実行可能なjarファイルをコマンド実行できず、process has not exited エラーが発生している
このQ&Aのポイント
質問文章では、実行可能なjarファイルをコマンド実行するプログラムが記述されていますが、process.exitValue() のところで process has not exited エラーが発生しています。
プログラムの実行中に出力されるコマンドの実行結果や戻り値を取得するために、BufferedReader を使用して実行結果を読み取っています。
しかし、プログラムの実行が完了する前に process.exitValue() を実行してしまっている可能性があります。このため、process has not exited エラーが発生していると考えられます。
実行可能なjarファイルをコマンド実行しその戻り値を取得したくて下記プログラムを書きました。
ところがprocess.exitValue() のところで
process has not exited というエラーを起こしてしまいます。原因はお分かりになりますでしょうか。
String command = "java -jar test.jar test;
Process process = Runtime.getRuntime().exec(command);
System.out.println("▼▼▼実行中のコマンド=" + command);
//int no = process.waitFor(); //exec()が非同期実行であるため実行結果が返ってくるまで待つ
System.out.println("▼▼▼コマンドの実行完了");
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ( (line = in.readLine())!=null ) {
line = in.readLine();
System.out.println(line);
}
System.out.println("★★★コマンドの戻り値=" + process.exitValue());
if(process.exitValue() != 0) {
process.destroy();
}
in.close();
}
} catch(Exception e) {
if( process != null ) {
process.destroy();
}
e.printStackTrace();
}
補足
コメントを外してプロセスが終了するのを待つようにしたら エラーが出なくなりました。ありがとうございました。