从Swing GUI编译并运行Java代码

从Swing GUI编译并运行Java代码,java,swing,user-interface,executable-jar,Java,Swing,User Interface,Executable Jar,我正在用Java(Swing)构建GUI,我必须从中执行Java代码。为了测试简单的代码,比如用Java打印HelloWorld就可以了 我看过论坛上的问题,我只知道我必须调用操作系统(我正在使用Windows7)来执行编译任务 多谢各位 注意:我已经尝试使用Runtime.getRuntime().exec()命令,但没有成功。您可能需要检查编译代码部分的, runtime.exec()应该使用正确的命令来启动应用程序。要进行编译,您需要安装一个包含Java编译器javac的JDK。您可以使用

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

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

多谢各位


注意:我已经尝试使用Runtime.getRuntime().exec()命令,但没有成功。

您可能需要检查编译代码部分的,
runtime.exec()应该使用正确的命令来启动应用程序。

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

或者,您可以使用Java编译器API。主编译器API可以通过


另请参阅本文:

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

汇编:

  • javac HelloWorldSwing.java
运行:

  • java HelloWorldSwing

如果要使用Runtime.getRuntime().exec()。下面是一个使用Runtime.getRuntime().exec()的示例

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


因此,您可以使用Runtime.getRuntime().exec()发送命令,您可以使用我在上面编写的javac或java命令。

中有一个使用
JavaCompiler
API的示例。请务必阅读与在运行时类路径上获取
tools.jar
相关的页面


STBC是

欢迎来到Stackoverflow!通常,最好发布一些代码来展示您的尝试,例如,您的Runtime.getRuntime().exec()调用是什么样子的?另外,您的问题不清楚您是想执行一个单独的进程,还是只想调用一个Java方法——因为您不需要exec(),我怀疑这个问题是否可以回答,请阅读我正在检查。请记住,在编译和运行java代码时,我将使用GUI应用程序,而不是eclipse(编译器)。@user1747048 eclipse与编译器不同。该链接已经包含一个代码段,显示了如何编译文件,最好的方法是什么?1.通过Runtime.getRuntime().exec()调用javac?或2。Java编译器APIJavaCompilerAPI更优越。例如,您可以直接访问编译错误,并可以决定如何处理它们(例如,将它们放入
JList
,将它们显示在
JTextArea
)。请参阅我的答案,以获得演示的链接来源,非常感谢。我创建了一个进程,调用命令提示符编译java文件(javac),然后运行它。以您提到的相同方式获取输出。再次感谢你。
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();  
        }  
    }  
}