我需要从我的Java代码运行.sh文件而不传递任何参数。我已经尝试用
做了Runtime.getRuntime().exec("src/lexparser.sh");
和
ProcessBuilder pb = new ProcessBuilder("src/lexparser.sh");
Process p = pb.start();
上述两种方法均无效。有没有其他方法可以运行Java形式的.sh文件?
答案 0 :(得分:9)
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);
}
答案 1 :(得分:3)
有两件事容易错过:
路径和CWD。确保找到可执行文件的最简单方法是提供绝对路径,例如/usr/local/bin/lexparser.sh
流程输出。您需要读取过程输出。输出被缓冲,如果输出缓冲区已满,则生成的进程将挂起。