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

升级AspectJ至1.9.8+Gradle7+Java11时无法定位aspectjrt.jar

解决方案

1. 修正AspectJ依赖与Gradle插件配置

Gradle 7对依赖管理和AspectJ编译逻辑有调整,结合你升级的AspectJ版本,需要通过插件简化配置并确保依赖正确引入:

  • 引入Freefair AspectJ插件(Gradle 7推荐的AspectJ集成方案),替代手动配置AJC编译流程
  • 明确将aspectjrt添加到运行时依赖,同时用aspect配置aspectjweaver供编译期使用

2. 升级Spring版本适配Java 11

原Spring Aspects 4.3.27.RELEASE仅支持到Java 8,Java 11要求Spring版本至少为5.3.x(该系列兼容Java 8-17,刚好匹配你后续升级到Java 17的计划)。必须统一所有Spring相关依赖的版本,避免版本冲突导致类找不到的问题。

3. 完整build.gradle配置示例

plugins {
    id 'java'
    // 适配Gradle 7和Java 11的AspectJ插件版本
    id 'io.freefair.aspectj' version '6.6.3'
}

repositories {
    mavenCentral()
}

java {
    // 使用Gradle工具链指定JDK 11,避免本地环境JDK版本不一致影响构建
    toolchain {
        languageVersion = JavaLanguageVersion.of(11)
    }
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11
}

dependencies {
    // 统一Spring版本到兼容Java 11的5.3.x系列
    implementation 'org.springframework:spring-context:5.3.29'
    implementation 'org.springframework:spring-aspects:5.3.29'
    
    // AspectJ依赖,1.9.8版本兼容Java 8-17
    implementation 'org.aspectj:aspectjrt:1.9.8'
    // 编译期需要的weaver依赖
    aspect 'org.aspectj:aspectjweaver:1.9.8'
}

aspectj {
    ajc {
        options {
            // 可选:保留调试信息,便于排查问题
            debug = true
        }
    }
}

4. 验证构建

执行以下命令强制刷新依赖并重新构建:

gradlew clean build --refresh-dependencies

关键说明

  • 工具链配置确保构建使用指定的JDK 11,避免本地环境JDK版本不一致的问题
  • 统一Spring版本是解决Spring类找不到的核心,4.3.x版本完全不兼容Java 11的模块系统和API变更
  • AspectJ插件自动处理AJC编译逻辑,无需手动配置编译路径和依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:22:40