我需要从我的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