使用java运行.sh文件
我想用java运行一个.sh文件。我希望打开一个终端,然后我可以在同一个终端中执行另一个命令,最后销毁它。 我已经使用了ProcessBuilder,但无法实现这一点。 我的代码:使用java运行.sh文件,java,bash,terminal,command,Java,Bash,Terminal,Command,我想用java运行一个.sh文件。我希望打开一个终端,然后我可以在同一个终端中执行另一个命令,最后销毁它。 我已经使用了ProcessBuilder,但无法实现这一点。 我的代码: ProcessBuilder pb = new ProcessBuilder("/home/omar/ros_ws/baxter2.sh"); Process p = pb.start(); 这个方法以前在另一个代码中工作,但我不知道为什么它在我的代码中不工作 提前感谢您的程序是否输出错误,或者您的程序是否未与文件
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用户
chmodu+xbaxter2.sh是的,我在java中没有错误。它只是没有效果。一旦我运行代码,它将正常结束,而不执行.sh文件。我看不出有什么不同。没有错误,也没有权限问题。关键是,当我更改不存在的.sh文件的路径时,它会抛出IOException,这已经打印了输出。我想了些什么。我制作了一个脚本,其中只包含打印当前目录的pwd,输出为“/home/omar/workspace/scriptrunner”,它是eclipse工作区的目录,而不是它的根目录。我该怎么解决呢?你是说之前的问题已经解决了?我不确定我是否理解你的解释,但这似乎是另一个问题,可能需要发布另一个问题。。。