toolprovider.getSystemjavacompiler()始终使用JDK返回null



我阅读了有关此问题的所有帖子,没有解决方案对我有用,我总是得到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);
    }

相关内容

  • 没有找到相关文章

最新更新