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

升级至Java 17后Gradle构建报错,AspectJ依赖异常求助

问题描述

我正在将测试框架升级为使用Java 17,采用Gradle构建工具,配置如下:

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(17))
    }
}

同时已将Gradle升级至8.0.2版本,但构建项目时收到报错:

[error] target level should be in '1.1'...'1.8','9'...'14': 17

报错提示与AspectJ库相关,但我无法理解具体原因。随后尝试将AspectJ插件升级至最新版本id "io.freefair.aspectj.post-compile-weaving" version "8.0.1",结果IDE无法识别AspectJ依赖,出现报错:

error: package org.aspectj.lang.annotation does not exist

我不清楚问题根源在哪,希望解决该问题使项目适配Java 17(当前使用Java 14和AspectJ)。

解决方案

1. 解决AspectJ版本兼容问题

旧版AspectJ(版本低于1.9.8)不支持Java 17,你遇到的第一个报错,本质是当前使用的AspectJ runtime或编译器版本无法识别Java 17的目标级别。必须升级AspectJ核心依赖到支持Java 17的版本(1.9.8及以上,推荐最新稳定版如1.9.20.1)。

2. 完整配置Gradle插件与依赖

升级Freefair插件后出现依赖找不到的问题,是因为插件升级后需要显式指定兼容Java 17的AspectJ依赖版本,同时要确保AspectJ编译任务的目标级别与Java 17对齐。以下是完整的配置示例:

plugins {
    id 'java'
    id 'io.freefair.aspectj.post-compile-weaving' version '8.0.1'
}

java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(17))
    }
}

dependencies {
    // 引入AspectJ核心依赖,版本需支持Java17
    aspectj 'org.aspectj:aspectjrt:1.9.20.1'
    aspectj 'org.aspectj:aspectjweaver:1.9.20.1'
    // 测试环节若需AspectJ,添加对应依赖
    testImplementation 'org.aspectj:aspectjrt:1.9.20.1'
}

// 强制AspectJ编译任务使用Java17的源和目标级别
tasks.withType(io.freefair.gradle.plugins.aspectj.AspectJCompile) {
    sourceCompatibility = '17'
    targetCompatibility = '17'
}

3. 同步IDE配置

  • 执行Gradle项目刷新操作,让IDE重新加载依赖配置
  • 确认IDE的项目SDK已设置为Java 17
  • 若使用IntelliJ IDEA,确保AspectJ插件已启用并更新至最新版本

4. 排查依赖冲突

如果仍存在版本兼容问题,检查项目中是否有其他依赖间接引入了旧版AspectJ。可通过执行./gradlew dependencies命令查看依赖树,然后通过强制依赖版本来排除冲突:

configurations.all {
    resolutionStrategy {
        force 'org.aspectj:aspectjrt:1.9.20.1'
        force 'org.aspectj:aspectjweaver:1.9.20.1'
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:15:15