【问题标题】:Calling C compiler from java program从java程序调用C编译器
【发布时间】:2013-10-28 05:36:05
【问题描述】:

我有一个需要编译 C 程序的项目。该项目使用Java。我必须将程序放入 JTextArea,(我使用 Swing 进行 GUI),针对测试文件运行它并将结果输出到另一个 JTextArea。但是我的代码似乎有问题。

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 文件,但事实并非如此。正确的方法是什么?

我看到了另外两个类似的帖子,但他们也没有为此提供简单的干净解决方案。 另外,我必须在它之后运行创建的可执行文件。

提前致谢。

【问题讨论】:

  • ProcessBuilder 不会在进程中出现问题(即编译器失败)时引发异常,您应该阅读进程的输出以确保没有出现任何问题。 ..
  • 阅读(并实施)所有 When Runtime.exec() won't 的建议。那可能会解决问题。如果不是,它应该提供更多关于失败原因的信息。然后忽略它引用exec 并(继续)使用ProcessBuilder 构建Process“我看到另外两个类似的帖子..” 链接?
  • @AndrewThompson 这些链接我忘记了。当我给这篇文章起标题时,他们提出了建议。我今晚会处理这个。
  • stackoverflow.com/questions/12340922/… 一个是@AndrewThompson 这是我第一次参加任何论坛,而且我也是 java 新手。

标签: java c swing mingw processbuilder


【解决方案1】:

正确的做法是什么?

一种方法是使用javax.tools.JavaCompiler“从程序中调用Java™ 编程语言编译器”。有一个例子here

【讨论】:

  • 抱歉,我忘了我必须接受我认为有用的答案。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多