我使用以下内容获取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,编译器始终为空。
我也只在tools.jar
中找到1.8.0
。
有没有人知道让JavaCompiler工作的方法,无论idk是什么?
答案 0 :(得分:2)
确保您的module-info.java
文件需要jdk.compiler
模块:
module myModule {
requires jdk.compiler;
}
根据documentation for getSystemJavaCompiler
:
此实现返回
jdk.compiler
提供的编译器 模块是否可用,否则为null
。