2014-09-02 150 views
0

我有一個路徑,我有shell腳本,我必須使用java程序來執行,但我得到錯誤。在java程序中使用Http路徑執行Shell腳本

Runtime.java 

public class Runtime { 

    public static void main(String[] args) { 

     System.out.println("Triggered"); 

     try { 
      Process p = Runtime.getRuntime().exec("\"http://192.168.1.7/sh_scripts/check_process/2.sh\""); 
      System.out.println(p); 

        } catch (IOException e) { 

      e.printStackTrace(); 
     } 

    } 

} 


LOGCAT 

http://192.168.1.7/sh_scripts/check_process/2.sh: CreateProcess error=2, The system cannot find the file specified 
    at java.lang.ProcessBuilder.start(Unknown Source) 
    at java.lang.Runtime.exec(Unknown Source) 
    at java.lang.Runtime.exec(Unknown Source) 
    at java.lang.Runtime.exec(Unknown Source) 
    at com.howtodoinjava.demo.poi.Runtiime.main(Runtiime.java:15) 
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified 
    at java.lang.ProcessImpl.create(Native Method) 
    at java.lang.ProcessImpl.<init>(Unknown Source) 
    at java.lang.ProcessImpl.start(Unknown Source) 
    ... 5 more 

我在執行時是否錯過任何內容。該路徑不是從Java程序讀取執行shell腳本的geeting所以請幫助我使用給定的http鏈接執行jar文件,我可以使用java成功執行2.sh文件

回答

0

據我所知,你只能在同一臺計算機上執行可執行文件,不支持從http,ftp或其他任何地方的遠程服務器下載腳本。

在普通的unix shell中也是如此。

所以,你有幾種選擇:

  1. 下載sh文件自己在Java中,把它放在一個臨時文件,並執行它有
  2. 運行的是下載另一sh文件。 sh文件並執行它;可以是一個oneliner,就像source <(curl -s http://192.168.1.7/sh_scripts/check_process/2.sh)
  3. 試着執行這個oneliner,也許使用ProcessBuilder可以緩解重定向等的創建。但是我不確定。
+0

謝謝朋友,這對我很有幫助。但是,在這個請求之後的一個真誠的請求可以把一些示例程序,它會幫助我和其他人@Simone Gianni – 2014-09-03 04:11:05

+0

讓解釋像這樣,因爲它是非常有用的。之後,你給一些代碼片段@Simone Gianni非常感謝您的時間和幫助Simonne – 2014-09-03 04:12:53