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

从JDK8升级至JDK17后JUnit测试因Mockito初始化失败报错

JDK8升级至JDK17后JUnit测试Mockito初始化失败解决方法

报错信息

java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null)
at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:84)
at jdk.proxy2/jdk.proxy2.$Proxy26.isTypeMockable(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at org.mockito.internal.configuration.plugins.PluginInitializer.loadImpl(PluginInitializer.java:52)
... 59 more
Caused by: org.mockito.exceptions.base.MockitoInitializationException:
Could not initialize inline Byte Buddy mock maker.

It appears as if your JDK does not supply a working agent attachment mechanism.
Java : 17
JVM vendor name : Oracle Corporation
JVM vendor version : 17.0.11+7-LTS-207
JVM name : Java HotSpot(TM) 64-Bit Server VM
JVM version : 17.0.11+7-LTS-207
JVM info : mixed mode, sharing
OS name : Windows 10
OS version : 10.0
at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.(InlineByteBuddyMockMaker.java:234)
... 65 more
Caused by: java.lang.NoClassDefFoundError: net/bytebuddy/agent/ByteBuddyAgent
at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.(InlineByteBuddyMockMaker.java:117)
... 65 more
Caused by: java.lang.ClassNotFoundException: net.bytebuddy.agent.ByteBuddyAgent
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 66 more

核心原因

报错根源是缺少net.bytebuddy.agent.ByteBuddyAgent类,Mockito的内联Mock生成器依赖该类在JDK17环境中完成代理类创建。JDK17的模块系统与JDK8差异较大,旧版本Mockito未适配JDK17,导致依赖缺失。

解决步骤

  • 升级Mockito版本:使用支持JDK17的Mockito版本(推荐4.0+,例如4.11.0及以上),新版本已适配JDK17模块系统,会自动引入兼容的ByteBuddy依赖。
  • 手动补充ByteBuddy Agent依赖:若升级Mockito后问题仍存在,直接添加依赖:
    Maven:
    <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy-agent</artifactId>
        <version>1.14.11</version>
        <scope>test</scope>
    </dependency>
    
    Gradle:
    testImplementation 'net.bytebuddy:byte-buddy-agent:1.14.11'
    
  • 临时切换Mock生成器(不推荐长期使用):在src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker文件中添加:
    mock-maker-inline=false
    
    该方案会禁用内联生成器,使用传统Mock方式,仅作为临时应急手段,因为内联生成器支持更多Mock场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 03:58:18