引数を渡さずに Java コードから .sh ファイルを実行する必要があります。私はすでにそれをやってみました
Runtime.getRuntime().exec("src/lexparser.sh");
と
ProcessBuilder pb = new ProcessBuilder("src/lexparser.sh");
Process p = pb.start();
上記の方法は両方とも機能しませんでした。Java から .sh ファイルを実行する他の方法はありますか?
ProcessBuilder pb = new ProcessBuilder("src/lexparser.sh", "myArg1", "myArg2");
Process p = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null)
{
System.out.println(line);
}
見逃しやすいのは次の2点です。
パスと CWD。実行可能ファイルが確実に見つかるようにする最も簡単な方法は、実行可能ファイルへの絶対パスを指定することです。たとえば、/usr/local/bin/lexparser.sh
プロセス出力。プロセスの出力を読む必要があります。出力はバッファリングされ、出力バッファがいっぱいになると、生成されたプロセスがハングします。