2013-10-28 25 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