我阅读了有关此问题的所有帖子,没有解决方案对我有用,我总是得到null
。
我使用JRE并将工具放置在Lib目录中,将其添加到构建路径中,但是当我想跳到声明Eclipse时,Eclipse想要跳入 rt.jar (?)'t理解。
这可能就是我只得到null
的原因吗?我该如何正确配置?getSystemJavaCompiler()
返回null的标准是什么?
首选项屏幕截图
jre是Java 运行时环境。它没有编译器,因此您获得了null
。如果您使用成熟的JDK,则会获得非零结果。
我找到了解决问题的解决方法。首先,我再次使用了JRE。我将工具放置在应用程序的LIB目录中。
toolprovider.getSystemjavacompiler()返回 null 。
这是获得Javacompiler的解决方法:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
if (compiler == null){
try {
Class<?> javacTool = Class.forName("com.sun.tools.javac.api.JavacTool");
Method create = javacTool.getMethod("create");
compiler = (JavaCompiler) create.invoke(null);
} catch (Exception e) {
throw new AssertionError(e);
}