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

IntelliJ Gradle测试运行器忽略Test任务中定义的jvmArgs问题

问题描述

我在Gradle(Kotlin DSL)中为所有Test任务配置了如下内容:

tasks.withType<Test>().configureEach {
  useJUnitPlatform()
  jvmArgs(
    "--add-opens",
    "java.base/java.util=ALL-UNNAMED",
    "--add-opens",
    "java.base/java.lang=ALL-UNNAMED",
    "--add-opens",
    "java.base/java.time=ALL-UNNAMED",
    "-Xshare:off",
  )
  maxParallelForks = 1
}

通过终端运行所有测试均可通过,但在IntelliJ中设置「Build,Execution,Deployment -> Build Tools -> Gradle -> Run tests using: Intellij IDEA」后运行测试,出现以下错误:

java.lang.reflect.InaccessibleObjectException: Unable to make private static java.time.Instant java.time.Instant.create(long,int) accessible: module java.base does not "opens java.time" to unnamed module @45c8e616

环境信息:

  • Java 17
  • Kotlin 1.8.10
  • Gradle 8.0.2
  • IntelliJ IDEA 2023.1(旗舰版)
解决方法

给IDEA测试运行器单独加JVM参数

  1. 打开「Run/Debug Configurations」——右上角运行按钮旁的下拉菜单里选「Edit Configurations」,或者按Shift+Alt+F10后选择该选项
  2. 左侧列表点击「JUnit」,选中要运行的测试配置,也可以点左上角+号新建一个配置
  3. 在「VM options」输入框中粘贴以下参数:
    --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.time=ALL-UNNAMED -Xshare:off
    
  4. 点击「Apply」保存配置,重新运行测试即可正常执行

全局配置所有测试的JVM参数

如果不想为每个测试配置单独设置,可以直接全局配置:

  1. 进入「File -> Settings -> Build, Execution, Deployment -> Testing -> JUnit」
  2. 在「Default VM options」中填入上述JVM参数
  3. 保存设置后,所有新创建的测试配置都会自动应用这些参数

改回用Gradle运行测试(简便方案)

如果不需要使用IntelliJ的测试运行器,直接切换回Gradle执行测试即可:

  1. 进入「File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle」
  2. 将「Run tests using」选项修改为「Gradle」
  3. 保存设置后,IntelliJ会调用Gradle执行测试,自动使用你之前在Gradle中配置的JVM参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:27:41