我需要在不传递任何参数的情况下从我的 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);
}
有两件事很容易错过:
路径和 CWD。确保找到可执行文件的最简单方法是提供它的绝对路径,例如/usr/local/bin/lexparser.sh
处理输出。您需要阅读过程输出。输出被缓冲,如果输出缓冲区已满,则生成的进程将挂起。