运行 使用 java 的 .sh 文件

run a .sh file using java

我想 运行 使用 java 的 .sh 文件。我想打开一个终端,然后我可以在同一个终端中执行另一个命令,最后销毁它。 我已经使用过 ProcessBuilder 但我无法完成此操作。 我的一段代码:

ProcessBuilder pb = new ProcessBuilder("/home/omar/ros_ws/baxter2.sh");
Process p = pb.start();

这个方法以前在别的代码里可以用,不知道为什么在我的代码里不行。

提前致谢

你的程序是否输出错误,或者你的程序没有与文件交互?

我建议尝试使用 ProcessBuilder 中的目录方法。

Process p = null;
ProcessBuilder pb = new ProcessBuilder("baxter2.sh");
pb.directory("/home/omar/ros_ws");
p = pb.start();

如果这不起作用,您还应该查看您尝试访问的文件的用户权限。

你怎么知道它没有执行?也许您只是没有看到它的结果。你应该在执行后得到 p.getInputStream() 并在你的控制台打印,比如:

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null)
{
   System.out.println(line);
}

此外,如果您使用的是 jdk 7+,请尝试:

pb.redirectOutput(Redirect.INHERIT);
pb.redirectError(Redirect.INHERIT);
Process p = pb.start();

我认为您应该使用以下命令将 .sh 文件授予用于 运行 java 程序的 OS 用户的可执行权限。

chmod u+x baxter2.sh