You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何执行/gradlew app:compileJava时触发java.lang.IllegalAccessError?

解决方案

1. 强制统一Lombok版本,解决旧版本残留问题

项目中存在Lombok 1.18.16版本残留,是部分依赖间接引入导致的。通过Gradle依赖约束强制使用兼容高JDK的Lombok版本(建议选1.18.22及以上,该版本开始支持JDK 16+):

在build.gradle中添加配置:

dependencies {
    // 强制统一Lombok版本
    constraints {
        annotationProcessor 'org.projectlombok:lombok:1.18.30'
        testAnnotationProcessor 'org.projectlombok:lombok:1.18.30'
        compileOnly 'org.projectlombok:lombok:1.18.30'
        testCompileOnly 'org.projectlombok:lombok:1.18.30'
    }

    // 原有依赖配置
    annotationProcessor 'org.projectlombok:lombok'
    testAnnotationProcessor  'org.projectlombok:lombok'
    compileOnly 'org.projectlombok:lombok'
    testCompileOnly 'org.projectlombok:lombok'

    // 其他依赖...
}

或者用全局配置强制版本:

configurations.all {
    resolutionStrategy {
        force 'org.projectlombok:lombok:1.18.30'
    }
}

2. 添加JVM编译参数,解决模块访问权限问题

JDK 9+的模块系统默认限制内部API访问,需给Java编译任务添加参数,允许Lombok访问jdk.compiler模块的相关内部包:

在build.gradle中添加:

tasks.withType(JavaCompile) {
    options.compilerArgs += [
        '--add-exports', 'jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED',
        '--add-exports', 'jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED',
        '--add-exports', 'jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED',
        '--add-exports', 'jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED',
        '--add-opens', 'jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED'
    ]
}

3. 彻底清理缓存并重新构建

执行命令清理构建缓存、刷新依赖:

./gradlew clean build --refresh-dependencies

4. 检查IntelliJ配置(可选)

确保IntelliJ注解处理器启用:

  • 打开Settings > Build, Execution, Deployment > Compiler > Annotation Processors
  • 勾选Enable annotation processing
  • 确认Lombok插件已安装并启用(Settings > Plugins中搜索Lombok)

内容的提问来源于stack exchange,提问作者user8107351

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 03:35:11