执行mvn clean install时Lombok与JDK模块访问权限错误求助
解决Lombok与Java版本冲突导致的Maven编译失败问题
问题核心原因
- Java版本配置不一致:pom.xml中
<properties>指定的java.version为1.8,但maven-compiler-plugin配置的source和target是11,同时你使用了最新Java版本(大概率为Java11+),版本匹配混乱引发冲突。 - Lombok版本过低:当前依赖的Lombok是Spring Boot 2.1.7.RELEASE默认的旧版本,不支持Java9+的模块系统,导致无法访问JDK内部编译API。
具体解决步骤
步骤1:统一Java版本配置
修改pom.xml中的Java版本配置,确保properties与compiler-plugin的版本一致:
- 若使用Java11:
<properties> <java.version>11</java.version> </properties>
maven-compiler-plugin的source和target已为11,无需额外修改。
- 若使用Java8:
调整maven-compiler-plugin配置:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin>
步骤2:升级Lombok版本
在pom.xml的Lombok依赖中指定支持Java9+的版本(如1.18.20及以上):
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> <optional>true</optional> </dependency>
步骤3:清理并重新构建
执行命令清理旧构建文件并重新编译:
mvn clean install
备选方案(升级Lombok仍有问题时)
若升级后仍出现权限错误,可给maven-compiler-plugin添加JVM参数,允许访问JDK内部API:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> <compilerArgs> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</arg> <arg>--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED</arg> </compilerArgs> </configuration> </plugin>
内容的提问来源于stack exchange,提问作者mac blanco
相关产品推荐
相关产品推荐

