我使用以下命令获取JavaCompiler
:
System.setProperty("java.home", "/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home");
javax.tools.JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
我尝试过:
jdk1.8.0_144.jdk
jdk1.8.0_162.jdk
jdk-9.0.4.jdk
jdk-10.jdk
jdk-11.jdk
对于 1.8.0
编译器永远无法工作,因为缺少以下文件:
/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/lib/currency.data
对于 1.8.0
之后的每个 JDK,编译器始终为 null。
我也只在1.8.0
中找到了tools.jar
。
有谁知道如何让 JavaCompiler 工作,无论 IDK 是什么?
最佳答案
确保您的 module-info.java
文件需要 jdk.compiler
模块:
module myModule {
requires jdk.compiler;
}
<小时/>
根据documentation for getSystemJavaCompiler
:
This implementation returns the compiler provided by the
jdk.compiler
module if that module is available, andnull
otherwise.
关于JDK 版本 > 1.8.0 时,JavaCompiler 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49711640/