1

我阅读了有关此问题的所有帖子,但没有任何解决方案适合我,我总是得到null.

我使用 JRE 并将 tools.jar 放在 lib 目录中,将其添加到构建路径中,但是当我想跳转到声明时,Eclipse 想要跳转到rt.jar(?),我完全不明白。
这可能是我只得到的原因null吗?如何正确配置?返回 null

的标准是什么?getSystemJavaCompiler()

偏好截图

4

2 回答 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 回答