我阅读了有关此问题的所有帖子,没有解决方案适用于我,我总是null
。
我使用JRE并将tools.jar放在lib目录中,将其添加到构建路径中,但是当我想跳转到声明时Eclipse希望跳转到 rt.jar (?)我完全不知道#39;理解。
这可能是我只得null
的原因吗?如何正确配置?
getSystemJavaCompiler()
返回null的标准是什么?
答案 0 :(得分:1)
JRE是Java 运行时环境。它没有编译器,因此您获得null
。如果使用完整的JDK,则会得到非空结果。
答案 1 :(得分: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);
}