我正在尝试使用反射动态编译和加载java类。如果我使用JDK作为标准VM,我的代码可以正常工作,没有任何例外。但是当我使用JRE作为标准VM时,同样的代码在ToolProvider.getSystemJavaCompiler()
抛出Null Pointer Exception。
我的类路径中不能有JDK。那么,我们有没有选择使用JRE作为标准VM来编译java代码?有人可以帮我这个吗?在此先感谢。
答案 0 :(得分:0)
只有存在编译器时,java-compiler API才有效。使用JDK时会出现编译器,但在使用JRE时不会(通常)存在。
您是否打算使用特殊编译器,该编译器与JDK中提供的编译器不同?看起来有一种方法可以将第三方编译器插入JRE。
http://docs.oracle.com/javase/7/docs/api/javax/tools/package-summary.html