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

Jmockit 1.49是否支持JDK17?升级后遇初始化错误咨询

JMockit 1.49与JDK 17兼容性及初始化问题解决

JMockit 1.49完全支持JDK 17,你遇到的“Jmockit didn't get initialized”错误并非版本兼容性问题,而是JDK 17的模块系统(JPMS)及启动参数要求导致的初始化失败,以下是具体解决方法:

  • 调整JVM启动参数:JDK 9+的模块系统会限制代理类的加载,需添加以下参数确保JMockit正确初始化:

    -javaagent:/path/to/jmockit-1.49.jar
    --add-opens java.base/java.lang=ALL-UNNAMED
    --add-opens java.base/java.io=ALL-UNNAMED
    --add-opens java.base/java.util=ALL-UNNAMED
    

    注意:-javaagent参数必须放在测试框架jar包参数之前(如JUnit的-jar junit.jar),否则代理无法生效。

  • 检查依赖声明顺序:使用Maven/Gradle时,需将JMockit依赖放在JUnit等测试框架依赖之前(类加载优先级会影响代理初始化),以Maven为例:

    <dependency>
        <groupId>org.jmockit</groupId>
        <artifactId>jmockit</artifactId>
        <version>1.49</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
    
  • 适配模块化项目:若项目为JPMS模块化项目(含module-info.java),需在模块声明中开放必要权限:

    open module your.module.name {
        requires jmockit;
        requires junit;
    }
    

    或添加JVM参数--add-modules org.jmockit强制加载JMockit模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:52:03