如何从Java运行.sh文件?
我需要从我的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
-
流程输出。 您需要阅读过程输出。 输出被缓冲,如果输出缓冲区已满,则生成的进程将挂起。