You need to enable JavaScript to run this app. 执行./gradlew build构建jar包报错IllegalAccessError问题求助
优惠活动
大模型
产品
解决方案
定价
更多

执行./gradlew build构建jar包报错IllegalAccessError问题求助

问题排查与解决方案

根因梳理

  • 第一个报错module jdk.compiler does not export com.sun.tools.javac.code to unnamed module:是JDK 16的模块化访问限制+低版本Lombok不兼容JDK16导致的,你当前使用的Lombok 1.18.20未适配JDK16的内部API访问规则。
  • 第二个依赖处理报错+Gradle 7.0不兼容警告:Gradle 7.x版本已经彻底移除了废弃多年的compile依赖配置,你在build.gradle中仍然使用compile声明依赖,属于非法配置。
  • 额外的日志依赖问题:Spring Boot默认自带logback日志实现,你手动引入log4j-api、log4j-core如果没有排除默认日志,后续还会出现日志冲突报错。

具体修复步骤

1. 替换所有废弃的compile配置

将dependencies块中所有compile关键字替换为Gradle 7.x支持的implementation。

2. 升级Lombok版本适配JDK16

将Lombok版本升级到1.18.22及以上,该版本开始正式支持JDK16。如果升级后仍然出现模块化导出报错,可在build.gradle中添加编译参数开放对应模块访问权限。

3. 优化日志依赖配置

要么直接删除手动引入的log4j依赖,使用Spring Boot默认的logback实现;如果必须使用log4j2,使用官方提供的starter并排除默认日志依赖,无需单独引入api和core包。

修复后完整build.gradle示例

plugins {
    id 'org.springframework.boot' version '2.5.2'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'org.projects'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '16' // 与本地运行的JDK16版本对齐
def versionLombok = '1.18.30' // 升级到高版本适配JDK16
repositories {
    mavenCentral()
}

// 如仍有JDK模块导出报错,保留以下配置,无报错可删除
compileJava {
    options.forkOptions.jvmArgs += [
        '--add-exports', 'jdk.compiler/com.sun.tools.javac.code=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.processing=ALL-UNNAMED'
    ]
}

dependencies {
    // 原来的compile全部替换为implementation
    // 如果需要使用log4j2可打开以下两行配置,否则直接删除自定义log4j依赖即可
    // implementation 'org.springframework.boot:spring-boot-starter-log4j2'
    // configurations.implementation { exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' }
    
    implementation group: 'org.projectlombok', name: 'lombok', version: versionLombok
    annotationProcessor group: 'org.projectlombok', name: 'lombok', version: versionLombok
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    runtimeOnly 'org.postgresql:postgresql'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}

验证步骤

修改完成后执行./gradlew clean build即可正常生成jar包,Gradle废弃特性警告也会同步消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 17:36:03