我阅读了有关此问题的所有帖子,但没有任何解决方案适合我,我总是得到null
.
我使用 JRE 并将 tools.jar 放在 lib 目录中,将其添加到构建路径中,但是当我想跳转到声明时,Eclipse 想要跳转到rt.jar(?),我完全不明白。
这可能是我只得到的原因null
吗?如何正确配置?返回 null
的标准是什么?getSystemJavaCompiler()
2 回答
1
JRE 是 Java运行时环境。它没有编译器,因此你得到一个null
. 如果你使用成熟的 JDK,你会得到一个非空的结果。
于 2017-09-07T12:40:34.033 回答
0
我找到了解决我的问题的方法。首先我再次使用了jre。我将 tools.jar 放在应用程序的 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);
}
于 2017-09-13T05:32:31.157 回答