如何从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); } 

有两件事容易错过:

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

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