Gradle构建SpringBoot微服务报Lombok非法访问错误如何解决
报错修复方案
这个报错是JDK9及以上版本引入的模块系统限制导致的,JDK17默认禁止外部代码访问JDK内部API,你使用的Lombok版本没有适配JDK17时就会触发该错误,可从两种方案中选一种修复:
方案1:切换为本地已安装的adoptopenjdk8构建(更稳妥,适合项目原本基于JDK8开发的场景)
- 打开IntelliJ IDEA,进入
File > Project Structure > Project Settings > Project,将Project SDK设置为adoptopenjdk8,语言级别选择8。 - 再进入
File > Settings > Build, Execution, Deployment > Build Tools > Gradle,将Gradle JVM设置为adoptopenjdk8。 - 重新执行
./gradlew clean build即可。
方案2:适配JDK17构建
- 第一步:升级Lombok版本至1.18.22及以上(推荐最新稳定版1.18.30),在项目
build.gradle文件中修改Lombok依赖的版本号即可。 - 第二步:如果升级后仍报错,在
build.gradle中添加编译器参数配置:
compileJava { options.fork = true options.forkOptions.jvmArgs += [ '--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED', '--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED', '--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED', '--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED', '--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED', '--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED', '--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED' ] }
- 重新执行构建命令即可。
查询项目开发时使用的Java版本方法
通过Gradle可通过以下方式查询:
- 直接查看项目根目录下的
build.gradle文件,搜索sourceCompatibility和targetCompatibility配置项,两个参数的取值就是项目开发时使用的Java版本。 - 若配置文件中没有显式声明这两个参数,可执行Gradle命令打印对应属性:
- Linux/Mac系统执行:
./gradlew properties | grep -E "sourceCompatibility|targetCompatibility" - Windows系统执行:
gradlew.bat properties | findstr "sourceCompatibility targetCompatibility"
- Linux/Mac系统执行:
- 也可通过项目依赖的Spring Boot版本辅助判断:Spring Boot 2.x系列默认兼容JDK8,Spring Boot 3.x系列最低要求JDK17。
内容的提问来源于stack exchange,提问作者user2281858
相关产品推荐
相关产品推荐

