从字符串编译Java源代码?

Ton*_*ony 8 java compiler-construction

有没有办法让正在运行的Java程序编译Java源代码(作为字符串传递)?

Class newClass = Compiler.compile ("class ABC { void xyz {etc. etc. } }");
Run Code Online (Sandbox Code Playgroud)

理想情况下,传入源代码引用的任何类都将由程序的类加载器解析.

这样的事情存在吗?

aio*_*obe 9

当然.看看包中的JavaCompiler类和其他类javax.tools.

他们自Java 1.6以来一直存在.

这是一些示例代码.

(正如@Sergey Tachenov在评论中指出的那样,它需要安装JDK作为必需的tools.jar文件随JDK一起提供而不是JRE.)

  • 我认为值得注意的是,它只适用于Sun的JRE,它需要安装JDK作为必要的tools.jar文件随JDK而不是JRE. (4认同)