2013-03-07 102 views
1

我有一個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

回答

1

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

0

您應該可以使用下面的命令,將shellcript替換爲您想要運行的腳本。

String s = "shellscript"; 
Process proc = Runtime.getRuntime().exec(s);