在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'。

+1

发布您的代码,否则我们无法提供帮助。 – Maroun 2013-03-07 11:59:25

Eclipse中运行Java程序,就像通​​常那样,这样的ProcessBuilder也能发挥作用。你有可能走错了路。如果路径是相对的,它将相对于System.getProperty("user.dir")

+0

嗨。现在我已经给出了脚本的完整路径,并且exec()命令起作用。但问题是shell脚本无法捕获命令的输出。当我在终端上运行相同的代码时,它在eclipse中运行,但是它失败了。代码在问题中已更新。 – Aditya 2013-03-07 12:35:08

+0

如果您使用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); 

你应该看看ProcessBuilder