我需要從我的Java應用程序編譯並運行用Python,Pascal或C編寫的源代碼(單個文件)。編譯並運行來自Java應用程序的源代碼
我需要知道:
- 如果編譯過程是成功的編譯程序
我怎麼能實現這一目標的迴歸輸出
我需要從我的Java應用程序編譯並運行用Python,Pascal或C編寫的源代碼(單個文件)。編譯並運行來自Java應用程序的源代碼
我需要知道:
我怎麼能實現這一目標的迴歸輸出
我一直在做同樣的事情..
public String compile()
{
String log="";
try {
String s= null;
//change this string to your compilers location
Process p = Runtime.getRuntime().exec("cmd /C \"C:\\Program Files\\CodeBlocks\\MinGW\\bin\\mingw32-g++.exe\" temp.cpp ");
BufferedReader stdError = new BufferedReader(new
InputStreamReader(p.getErrorStream()));
boolean error=false;
log+="\n....\n";
while ((s = stdError.readLine()) != null) {
log+=s;
error=true;
log+="\n";
}
if(error==false) log+="Compilation successful !!!";
} catch (IOException e) {
e.printStackTrace();
}
return log;
}
public int runProgram()
{
int ret = -1;
try
{
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("cmd.exe /c start a.exe");
proc.waitFor();
ret = proc.exitValue();
} catch (Throwable t)
{
t.printStackTrace();
return ret;
}
return ret;
}
這是用來編譯我的美迪第一個使用2種功能。將地址更改爲編譯器位置。並返回日誌(如果編譯失敗)以查看錯誤。
第二個運行編譯後的代碼。返回退出代碼以檢查它是否正確終止。
我不是一個很好的java編碼器。我想你可以更好地改善我的代碼;)..如果你確實請告訴我。我也在尋找how to communicate with the created process
您可以使用java.lang.ProcessBuilder來執行命令並檢查狀態。 這裏JAVADOC:http://download.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html
你可能會想要使用Runtime.exec()
來調用各自的編譯器。請查看JavaDoc瞭解更多關於如何處理輸出的信息等。
一般來說,您需要啓動一個Process
,該程序運行外部程序(首先是編譯器,然後是編譯好的二進制文件) ),使用Runtime.getRuntime().exec()
或ProcessBuilder
產生Process
(因爲你的編譯器可能需要一套複雜的選項,ProcessBuilder
可能是一個更好的選擇)。這將允許您在執行時從流程中獲取輸出(以便您可以監視編譯器輸出的警告或錯誤)以及其返回代碼。
您可能會發現下面的例子有所幫助:
http://www.rgagnon.com/javadetails/java-0014.html
要獲得運行Process
的返回代碼,只需使用waitFor()
方法。如果你不關心任何輸出並只想返回值,這很方便。
有用的鏈接,很好的例子。 – 2011-04-12 23:56:05
如果您主要在做代碼片段,您可以嘗試使用Jython運行Python代碼。詳情請參閱Howto multithreaded jython scripts running from java?。
這是非常基本的,但給出一個不錯的起點+1。 – 2011-05-07 22:00:28
你還需要什麼? – shababhsiddique 2011-05-08 04:07:55