Maven 3.6.3+Lombok 1.18.30配合Java 17构建异常求助
Maven构建报错:Unable to load cache item 解决方案
报错信息
$ mvn clean package [ERROR] Error executing Maven. [ERROR] java.lang.IllegalStateException: Unable to load cache item [ERROR] Caused by: Unable to load cache item [ERROR] Caused by: Could not initialize class com.google.inject.internal.cglib.core.$MethodWrapper [ERROR] Caused by: Exception com.google.inject.internal.cglib.core.$CodeGenerationException: java.lang.reflect.InaccessibleObjectException-->Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @2d127a61 [in thread "main"]
环境说明
- 使用版本:Maven 3.6.3、Lombok 1.18.30
- 异常现象:命令行执行
mvn clean package报错,但IntelliJ IDEA基于openjdk-17-jdk可正常构建运行
解决方案
1. 升级Maven版本
Maven 3.6.3对JDK 17的兼容性不足,其内置的Guice版本未适配JDK 17的模块访问控制规则。建议直接升级到Maven 3.8.6及以上版本(该系列版本已完成JDK 17适配),升级后重新执行构建命令即可。
2. 临时适配(不升级Maven)
若暂时无法升级Maven,可在执行构建命令时添加JVM参数,开放模块访问权限:
mvn clean package --add-opens java.base/java.lang=ALL-UNNAMED
该参数允许Maven相关依赖所属的未命名模块访问java.lang模块的内部API,绕过JDK 17的模块限制。
3. 检查Lombok配置(可选)
虽然IDEA构建正常,仍需确保项目中Lombok的Maven插件配置正确,避免版本冲突:
<plugin> <groupId>org.projectlombok</groupId> <artifactId>lombok-maven-plugin</artifactId> <version>1.18.30.0</version> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>delombok</goal> </goals> </execution> </executions> </plugin>
内容的提问来源于stack exchange,提问作者Aaron Wildberg
相关产品推荐
相关产品推荐

