JDK 版本 > 1.8.0 时,JavaCompiler 始终为 null

标签 java

我使用以下命令获取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, and null otherwise.

关于JDK 版本 > 1.8.0 时,JavaCompiler 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49711640/

相关文章:

java - Spring添加web.xml配置时Session总是过期

java - 如何让 Java 中的所有实例做某事

java - 标准集合返回的 Stream 实现有多专业?

java - Spring Data JPA 是否有 "member of"的命名约定?

java - 当我在 JPanel 变得可见后对其进行修改时,paintComponent 在 componentResized 之前被调用

java - 在 tomcat 中安装 GoDaddy SSL 证书...没有证书与私钥匹配

java - spring 注入(inject)模拟未使用

java - 如何使用嵌入式jetty提供index.html?

Java 插入按钮,将 MySQL 添加到数据库和表

java - 如何将 JSON 对象从 POSTMAN 发送到 Restful Web 服务