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

升级Java 17后JUnit测试报InaccessibleObjectException,Gradle配置无效

解决Java 17升级后JUnit测试的InaccessibleObjectException问题

问题根源

你在Gradle的test任务中通过doFirst块配置jvmArgs的方式,无法确保参数被正确传递给测试JVM进程。doFirst是任务执行前的动作,而jvmArgs属于任务的核心属性,直接配置才能生效。

修正后的Gradle配置

将jvmArgs从doFirst块中移出,直接配置在test任务下:

test {
    exclude 'com/corporative/**'
    maxHeapSize = "2048m"
    // 直接配置JVM参数,无需嵌套在doFirst内
    jvmArgs "-javaagent:${configurations.testRuntimeClasspath.find { it.name.contains("jmockit") }.absolutePath}",
            '--add-opens', 'java.base/java.util=ALL-UNNAMED',
            '--add-opens', 'java.base/java.lang=ALL-UNNAMED'
}

额外排查方向

  • 若使用旧版Gradle,建议升级到7.3及以上版本(Java 17的适配要求),避免模块系统参数传递的兼容性问题。
  • 执行./gradlew test --info命令,查看实际传递给测试进程的JVM参数,确认--add-opens参数是否存在,排查是否被其他插件(如JaCoCo)覆盖。
  • 验证jmockit的依赖路径是否正确,确保configurations.testRuntimeClasspath能准确定位到对应的jar包,避免javaagent路径错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:05:36