我正在尝试使用反射动态编译和加载java类。如果我使用 JDK 作为标准 VM,我的代码可以正常工作,没有任何异常。ToolProvider.getSystemJavaCompiler()
但是当我将 JRE 用作标准 VM 时,相同的代码会引发空指针异常。
我的类路径中不能有 JDK。那么,我们是否可以选择使用 JRE 作为标准 VM 来编译 java 代码?谁能帮我解决这个问题?提前致谢。
我正在尝试使用反射动态编译和加载java类。如果我使用 JDK 作为标准 VM,我的代码可以正常工作,没有任何异常。ToolProvider.getSystemJavaCompiler()
但是当我将 JRE 用作标准 VM 时,相同的代码会引发空指针异常。
我的类路径中不能有 JDK。那么,我们是否可以选择使用 JRE 作为标准 VM 来编译 java 代码?谁能帮我解决这个问题?提前致谢。
java-compiler API 仅在存在编译器时才起作用。编译器在您使用 JDK 时存在,但在您使用 JRE 时(通常)不存在。
您是否打算使用一种特殊的编译器,一种与 JDK 中提供的不同的编译器?看起来有一种方法可以将第三方编译器插入 JRE。
http://docs.oracle.com/javase/7/docs/api/javax/tools/package-summary.html