在运行时生成、编译和使用Java代码?

在运行时生成、编译和使用Java代码?,java,compilation,Java,Compilation,我有一个场景,当我的应用程序运行时,我必须生成Java代码 可以从我的应用程序(作为一个单独的应用程序)编译和运行以上代码 是否可以从同一个应用程序编译并使用它。无法想象使用的可能性,或者您可以从java代码运行任何命令行应用程序 这包括javac编译器和java作为一个单独的进程您可以使用以下实例: 请按照链接获取有关如何使用它的示例。签出。今天我第二次引用它——我发誓我不为他们工作。请注意,您需要一个JDK才能让它工作。JRE安装不包括编译器。Thorbjørn的观点很好。如果他选择这个替代

我有一个场景,当我的应用程序运行时,我必须生成Java代码

可以从我的应用程序(作为一个单独的应用程序)编译和运行以上代码

是否可以从同一个应用程序编译并使用它。无法想象使用的可能性,或者您可以从java代码运行任何命令行应用程序


这包括javac编译器和java作为一个单独的进程

您可以使用以下实例:


请按照链接获取有关如何使用它的示例。

签出。今天我第二次引用它——我发誓我不为他们工作。

请注意,您需要一个JDK才能让它工作。JRE安装不包括编译器。Thorbjørn的观点很好。如果他选择这个替代方案,那么他的应用程序的最低要求将是JDK 6。JRE 7似乎已经将javax.tools.ToolProvider放在了rt.jar中。虽然我还没有测试过,但在运行MyCompilingUtility.java时,我确实看到了
jdk1.7.0\u 05/jre/lib/rt.jar
javax/tools/JavaCompiler.class
javax/tools/ToolProvider.class
,后者调用
Runtime\exec()
参数为
javac MyFile.java
其中
MyFile.java
是由
mycompilingity.java
通过
PrintWriter
创建的,我没有看到为
MyFile.java
生成的
文件。这是为什么?检查javac的错误输出,javac希望工作目录是它正在编译的类的根包hanks,@ratchet freak。发布Sotirios Delimanolis的评论,详细阐述您的有益建议-
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();