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

如何覆盖传递依赖版本?Mockito适配Java21依赖问题

Java 21构建报错:Byte Buddy版本不兼容的非Mockito升级方案

升级到Java 21后构建出现如下报错:

Failed to enhance class ...:
  Java 21 (65) is not supported by the current version of Byte Buddy
  which officially supports Java 20 (64) - update Byte Buddy or set
  net.bytebuddy.experimental as a VM property

问题根源是你使用的Mockito 4依赖了不支持Java 21的旧版Byte Buddy。你之前只排除了byte-buddy核心依赖,但Mockito还依赖了byte-buddy-agent,这个旧版agent同样会导致兼容性问题,所以只覆盖核心包无法彻底解决。

除了升级Mockito,还有两种可行方案:

方案一:完整覆盖Byte Buddy相关依赖

在POM中同时排除Mockito依赖的byte-buddy和byte-buddy-agent,然后显式引入兼容Java 21的新版依赖:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>${mockito.core.version}</version>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>net.bytebuddy</groupId>
            <artifactId>byte-buddy</artifactId>
        </exclusion>
        <exclusion>
            <groupId>net.bytebuddy</groupId>
            <artifactId>byte-buddy-agent</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>net.bytebuddy</groupId>
    <artifactId>byte-buddy</artifactId>
    <version>1.14.11</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>net.bytebuddy</groupId>
    <artifactId>byte-buddy-agent</artifactId>
    <version>1.14.11</version>
    <scope>test</scope>
</dependency>

执行mvn dependency:tree确认后,两个Byte Buddy相关依赖都会被替换为指定的新版,彻底解决Java 21兼容性问题。

方案二:启用Byte Buddy实验性Java 21支持

按照报错提示,添加VM启动参数-Dnet.bytebuddy.experimental=true,让旧版Byte Buddy尝试支持Java 21。这种方法无需修改依赖,但属于实验性支持,可能存在潜在兼容性风险,适合快速验证场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:12:34