在Eclipse的Java代码的运行时执行一个shell脚本
我有一个shell脚本,我想在Eclipse中从Java代码执行。在Eclipse的Java代码的运行时执行一个shell脚本
我能够使用外部工具来运行脚本,但我希望脚本在执行Java代码期间运行,即Java代码应该调用脚本。
早些时候我使用“Process Builder”来做到这一点,但似乎Eclipse并不支持该方法,因为它在提供所有权限时显示“文件未找到”。
任何想法如何从Eclipse中的Java代码运行脚本?
下面是代码:
String line1 = null;
String target = new String("/home/aditya_s/workspace/rs-test/src/iperf_parse.sh " + host + " " + "9000");
while(line1 == null)
{
Process p1 = Runtime.getRuntime().exec(target);
BufferedReader input1 = new BufferedReader(new InputStreamReader(p1.getInputStream()));
System.out.println("Ran");
line1 = input1.readLine();
p1.destroy();
}
BW = Double.parseDouble(line1);
提示:右键单击shell脚本并转到属性。给“所有者”赋予“读/写/执行”权限。默认情况下,“执行”权限不存在。所以你可能会得到一个错误,如'不能执行script.sh'。
Eclipse中运行Java程序,就像通常那样,这样的ProcessBuilder也能发挥作用。你有可能走错了路。如果路径是相对的,它将相对于System.getProperty("user.dir")
。
嗨。现在我已经给出了脚本的完整路径,并且exec()命令起作用。但问题是shell脚本无法捕获命令的输出。当我在终端上运行相同的代码时,它在eclipse中运行,但是它失败了。代码在问题中已更新。 – Aditya 2013-03-07 12:35:08
如果您使用Runtime.exec,请参阅[this](http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Runtime.html#exec(java.lang.String []))或者如果您使用ProcessBuilder,请参见[this](http://docs.oracle.com/javase/6/docs/api/java/lang/ProcessBuilder.html)。无论如何,你需要在数组中提供命令和参数。在你的情况下,这将工作:'新的字符串[] {“/ home/aditya_s/workspace/rs-测试/ src/iperf_parse.sh”,主机,“9000”}' – WouterH 2013-03-07 12:53:59
您应该可以使用下面的命令,将shellcript替换为您想要运行的脚本。
String s = "shellscript";
Process proc = Runtime.getRuntime().exec(s);
发布您的代码,否则我们无法提供帮助。 – Maroun 2013-03-07 11:59:25