2013-10-28 118 views
2

我有一個需要編譯C程序的項目。該項目使用Java。我必須將程序帶入JTextArea(我正在使用Swing for GUI),將其運行到測試文件並將結果輸出到另一個JTextArea。但是在我的代碼中似乎有些問題。從java程序調用C編譯器

Process p = new ProcessBuilder("c:\\MinGW\\bin\\cc.exe", "program.c").start(); 

program.c包含用戶進入TextArea和程序 「C:\ MinGW的\ BIN \ cc.exe」 是我的C編譯器。我檢查了這沒有引發任何異常。它應該在我的當前目錄下創建一個名爲a.exe的文件,其中包含program.c文件,但它不是。正確的方法是什麼?

我看到兩個類似的帖子,但他們也沒有提供一個簡單的乾淨的解決方案。 另外,我必須在它之後運行創建的可執行文件。

在此先感謝。

+0

如果進程內出現錯誤(即編譯器失敗),ProcessBuilder將不會引發異常,您應該讀取進程的輸出以確保沒有任何錯誤發生...... – MadProgrammer

+2

Read(並執行)*所有* [當Runtime.exec()不會](http://www.javaworld.com/jw-12-2000/jw-1229-traps.html)的建議。這可能會解決問題。如果不是,它應該提供更多關於失敗原因的信息。然後忽略它引用'exec'並(繼續)使用'ProcessBuilder'構建'Process'。 *「我看到另外兩個帖子與此類似。」*鏈接? –

+0

@AndrewThompson這些鏈接我忘了。當我授予這個職位的頭銜時,他們會提出建議。我今晚將爲此工作。 – kuroop

回答

2

什麼是正確的方法來做到這一點?

一種方法是使用javax.tools.JavaCompiler「從程序調用Java™編程語言編譯器」。有一個例子here

+0

對不起,我忘了我必須接受我認爲有用的答案。 :) – kuroop