2012-12-10 66 views
0

可能重複:
How to use javas Process.waitFor()?從Java執行make命令編譯其他程序

我有一個程序上傳在我的電腦到Arduino的。我創建了一個makefile來編譯並上傳到arduino fio。

它工作正常。 現在我正嘗試創建一個用於執行該makefile的java程序,但我遇到了以下問題:

Runtime.getRuntime()。exec(「make」);

當我執行它時,程序被阻止。

我應該怎樣做才能執行該命令?與其他訂單,它工作正常。使清潔,使依賴....

我想這個代碼,我網上找到了這個任務:

public static void prueba() throws InterruptedException, IOException { 

    Process proc = Runtime.getRuntime().exec("make"); 
    int size; 
    String s; 
    int exCode = proc.waitFor(); 
    StringBuffer ret = new StringBuffer(); 



    while((size = proc.getInputStream().available()) != 0) { 
     byte[] b = new byte[size]; 
     proc.getInputStream().read(b); 
     s = new String(b); 
     ret.append(s); 
    } 
    System.out.println(ret.toString());   
} 
+1

也許很有用:http://stackoverflow.com/questions/7101468/execute-makefile-using-java-command – acostache

回答

1

您需要同時讀取輸入流(輸出)和錯誤流( stderr)在撥打process.waitFor()之前分開的線程中,以防止阻塞。

本文是必讀:"When Runtime.exec() won't"並向您展示如何正確使用Runtime.exec

+0

我現在要讀它。非常感謝。 – user1298272