3

我正在用 Java (Swing) 构建一个 GUI,我必须从中执行 Java 代码。为了测试简单的代码,比如用 Java 打印 HelloWorld 就可以了。

我看过论坛的问题,我只知道我必须调用操作系统(我使用的是 Windows7)来执行该编译任务。

谢谢你。

PS:我尝试过 Runtime.getRuntime().exec() 命令,但没有成功。

4

4 回答 4

2

您可能想查看编译代码部分的java 编译器 api,runtime.exec() 应该使用正确的命令来启动应用程序。

于 2012-10-15T13:05:13.787 回答
2

如果您使用的是 IDE,则不需要调用这些命令。

编译:

  • javac HelloWorldSwing.java

跑:

  • java HelloWorldSwing

……

如果你想使用 Runtime.getRuntime().exec()。下面是一个使用 Runtime.getRuntime().exec() 的例子。

import java.io.*;  
public class TestExec {  
    public static void main(String[] args) {  
        try {  
            Process p = Runtime.getRuntime().exec("cmd /C dir");  
            BufferedReader in = new BufferedReader(  
                                new InputStreamReader(p.getInputStream()));  
            String line = null;  
            while ((line = in.readLine()) != null) {  
                System.out.println(line);  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
}  

“这只是运行 dir 命令,捕获其输出并将其复制到程序 stdout。不是很令人兴奋,但它显示了使用 Runtime.exec() 的基本部分。您还可以打开进程的输出和错误流。“

所以你可以使用 Runtime.getRuntime().exec() 发送命令,你可以使用我上面写的 javac 或 java 命令。

于 2012-10-15T13:09:48.363 回答
1

要进行编译,您需要安装包含 Java 编译器的 JDK javac。您可以通过 Runtime.getRuntime().exec() 调用 javac 来编译 Java 源代码,然后加载它。

或者,您可以使用 Java 编译器 API。可以通过以下方式检索主编译器 API javax.tools.ToolProvider.getSystemJavaCompiler();

另请参阅这篇文章:Java 6.0 编译器 API

于 2012-10-15T13:07:24.957 回答
1

在SSCCE 基于文本的编译器 (STBC)中有一个使用JavaCompilerAPI 的示例。请务必阅读与在运行时类路径上获取 a 相关的页面。tools.jar

STBC 是开源的。

于 2012-10-15T14:46:15.367 回答