2012-03-07 61 views
3

我想通過調用Cygwin的gcc或gcc-4從Java編譯C文件,但沒有任何我嘗試似乎工作。我正在嘗試的是以下代碼行:如何從Java調用Cygwin C編譯器GCC?

theProcess = Runtime.getRuntime().exec("cmd /c C:/cygwin/bin/gcc-4.exe -o C:/work/source.exe C:/work/source.c"); 

但是,它沒有輸出任何內容。

+1

返回的代碼是什麼?你有沒有試過閱讀err流和out流? – 2012-03-07 21:19:49

+0

爲什麼cmd?爲什麼不直接運行gcc.exe? – bmargulies 2012-03-07 21:20:58

+1

你不需要調用cmd.exe Cygwin程序是'Windows兼容的',所以你可以直接給它們打電話。 – anakkin 2012-03-07 21:38:19

回答

1

爲了充分理解這一點,我需要了解更多關於theProcess之後你在做什麼。但是簡單地調用「exec」將不會輸出任何東西給Std輸出,如果這是你所期望的。在某些情況下,如果它們的輸出沒有被消耗,命令根本不會執行。這就是說,您需要讀取已創建的Process對象的輸出。試試這樣的:

BufferedReader br = new BufferedReader (new InputStreamReader (theProcess.getInputStream()); 
String line = br.readLine(); 
while (line != null) { 
    System.out.println(line); 
    line = br.readLine(); 
} 

這將打印輸出從標準輸出到JVM的標準輸出。