7

引数を渡さずに Java コードから .sh ファイルを実行する必要があります。私はすでにそれをやってみました

Runtime.getRuntime().exec("src/lexparser.sh");

ProcessBuilder pb = new ProcessBuilder("src/lexparser.sh");
Process p = pb.start();

上記の方法は両方とも機能しませんでした。Java から .sh ファイルを実行する他の方法はありますか?

4

2 に答える 2

12
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);
 }
于 2013-03-15T09:10:57.867 に答える
3

見逃しやすいのは次の2点です。

  1. パスと CWD。実行可能ファイルが確実に見つかるようにする最も簡単な方法は、実行可能ファイルへの絶対パスを指定することです。たとえば、/usr/local/bin/lexparser.sh

  2. プロセス出力。プロセスの出力を読む必要があります。出力はバッファリングされ、出力バッファがいっぱいになると、生成されたプロセスがハングします。

于 2013-03-15T09:20:49.883 に答える