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

有两件事很容易错过:

  1. 路径和 CWD。确保找到可执行文件的最简单方法是提供它的绝对路径,例如/usr/local/bin/lexparser.sh

  2. 处理输出。您需要阅读过程输出。输出被缓冲,如果输出缓冲区已满,则生成的进程将挂起。

于 2013-03-15T09:20:49.883 回答