Unable to compile JDK 17 using Maven 3.8: error: module jdk.compiler does not "opens com.sun.tools.javac.processing" to unnamed module
Unable to compile JDK 17 using Maven 3.8: error: module jdk.compiler does not "opens com.sun.tools.javac.processing" to unnamed module
我正在尝试使用 JDK 17 和 Maven 3.8.4 编译现有的 Spring 引导项目,但我不断收到此错误。
Unable to make field private
com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors
com.sun.tools.javac.processing.JavacProcessingEnvironment.discoveredProcs
accessible: module jdk.compiler does not "opens
com.sun.tools.javac.processing" to unnamed module @521e3470
这个问题也出现在旧版本的 Maven 上,比如 3.6。 JDK 16 也会发生这种情况。通过 java.version
、maven.compiler.source
和 [=14] 在 pom.xml 中配置什么版本的 Java 并不重要=].只有 JDK 版本用于编译...显示在 mvn -v
命令中。
项目使用 JDK15 编译正常。编译开始时错误立即发生,就在说明正在编译多少 类 的 INFO 消息之后。在我的 Windows 笔记本电脑和 Ubuntu CI 服务器上都会发生。
知道这可能是什么吗?
编辑:添加更多 POM 文件。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>15</java.version>
<maven.compiler.source>15</maven.compiler.source>
<maven.compiler.target>15</maven.compiler.target>
<spring-cloud.version>2020.0.4</spring-cloud.version>
<ch.qos.logback.version>1.2.3</ch.qos.logback.version>
</properties>
编辑:我也使用 Lombok
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
</dependency>
编辑:我不认为这与另一个问题是同一个问题,因为我是通过错误消息搜索的,而另一个问题从未出现在结果中。要回答这个问题,您需要知道该错误与 Lombok 相关。该错误没有提供龙目岛是罪魁祸首的线索。
问题是 lombok 项目的使用,在这种情况下使用的不是最新版本。
我正在尝试使用 JDK 17 和 Maven 3.8.4 编译现有的 Spring 引导项目,但我不断收到此错误。
Unable to make field private com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors com.sun.tools.javac.processing.JavacProcessingEnvironment.discoveredProcs accessible: module jdk.compiler does not "opens com.sun.tools.javac.processing" to unnamed module @521e3470
这个问题也出现在旧版本的 Maven 上,比如 3.6。 JDK 16 也会发生这种情况。通过 java.version
、maven.compiler.source
和 [=14] 在 pom.xml 中配置什么版本的 Java 并不重要=].只有 JDK 版本用于编译...显示在 mvn -v
命令中。
项目使用 JDK15 编译正常。编译开始时错误立即发生,就在说明正在编译多少 类 的 INFO 消息之后。在我的 Windows 笔记本电脑和 Ubuntu CI 服务器上都会发生。
知道这可能是什么吗?
编辑:添加更多 POM 文件。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>15</java.version>
<maven.compiler.source>15</maven.compiler.source>
<maven.compiler.target>15</maven.compiler.target>
<spring-cloud.version>2020.0.4</spring-cloud.version>
<ch.qos.logback.version>1.2.3</ch.qos.logback.version>
</properties>
编辑:我也使用 Lombok
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
</dependency>
编辑:我不认为这与另一个问题是同一个问题,因为我是通过错误消息搜索的,而另一个问题从未出现在结果中。要回答这个问题,您需要知道该错误与 Lombok 相关。该错误没有提供龙目岛是罪魁祸首的线索。
问题是 lombok 项目的使用,在这种情况下使用的不是最新版本。