2016-07-06 46 views
0

我想使用Java執行/運行此文件。 的路徑是 「/usr/local/studio.sh」Java如何通過他的路徑執行/運行特定文件

我想:

public class Main { 

public static void main(String[] args) { 

    String[] cmd = {"cd /usr/local","./studio.sh"}; 
    try { 
     Process p = Runtime.getRuntime().exec(cmd); 


    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} } 

,但它不工作。有另一種方法嗎?

+0

重讀你寫的:'CD的/ usr /本地/ studio.sh' – Siguza

+0

貌似你試圖執行2個命令。使用完整路徑,或者使用ProcessBuilder,並設置其目錄,如果你想控制進程的根目錄 – copeg

+0

在cmd數組中,你的第一個元素是命令,所有其他元素都是要傳遞的參數。這實際上是運行: '$ cd /usr/local/studio.sh ./studio.sh' – CJxD

回答

0

您可以使用ProcessBuilder(見https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html),並設置使用directory(...)工作目錄,而不是cd命令。

最終是這樣的:

ProcessBuilder pb = new ProcessBuilder("/usr/bin/bash","/usr/local/studio.sh") 
pb.directory(...); 
pb.redirectErrorStream(true); 
Process p = pb.start(); 
IOUtils.copy(p.getInputStream(), System.out); 
p.waitFor(); 
0

這是對我工作的罰款:

public static void main(String[] args) throws InterruptedException, IOException { 

    String[] cmd = {"/usr/local/android-studio/bin/studio.sh"}; 
     Process p = Runtime.getRuntime().exec(cmd); 

     p.waitFor(); 

}

感謝。

0

Runtime API有一個方法來指示要執行該方法的目錄:定義「無環境」:

File folder = new File("/home/user/folder"); 
Process proc = Runtime.getRuntime().exec(command, null, folder); 

null在這種情況下表示。

Runtime API JavaDoc

相關問題