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

VSCode中Java测试配置vmArgs遇识别错误,求JavaFX权限配置帮助

解决JavaFX + TestFX的“JavaFX.graphics is not accessible”及VM参数不识别问题

问题分析

  1. “JavaFX.graphics is not accessible”错误:
    TestFX需要访问JavaFX内部的com.sun.javafx.application包(如ApplicationImpl类),但Java 9+的模块系统默认禁止外部代码访问这类内部API,因此需要通过VM参数开放权限。

  2. “Unrecognized option”错误:
    你当前使用的--add-exports参数不符合TestFX的实际需求——--add-exports用于编译时导出包,而TestFX运行时通过反射访问内部类,更适合用--add-opens参数;同时需确保VM参数格式符合VSCode测试配置要求。

解决方案

1. 修正VM参数配置

将--add-exports替换为--add-opens,调整后的配置如下:

"java.test.config": {
    "name": "testConfig",
    "workingDirectory": "${workspaceFolder}",
    "vmArgs": [
        "--add-opens javafx.graphics/com.sun.javafx.application=ALL-UNNAMED"
    ]
}

若你的TestFX版本还需要访问其他内部包,可追加更多参数,例如:

"vmArgs": [
    "--add-opens javafx.graphics/com.sun.javafx.application=ALL-UNNAMED",
    "--add-opens javafx.controls/com.sun.javafx.scene.control=ALL-UNNAMED"
]

2. 确保JavaFX依赖正确引入

  • Maven项目:在pom.xml中添加对应版本的JavaFX和TestFX依赖(根据你的操作系统替换classifier值):
<dependencies>
    <!-- JavaFX 核心依赖 -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-graphics</artifactId>
        <version>21.0.1</version>
        <classifier>win</classifier> <!-- 可选值:linux/mac -->
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>21.0.1</version>
        <classifier>win</classifier>
    </dependency>
    <!-- TestFX 测试依赖 -->
    <dependency>
        <groupId>org.testfx</groupId>
        <artifactId>testfx-core</artifactId>
        <version>4.0.16-alpha</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.testfx</groupId>
        <artifactId>testfx-junit5</artifactId>
        <version>4.0.16-alpha</version>
        <scope>test</scope>
    </dependency>
</dependencies>
  • Gradle项目:在build.gradle中配置JavaFX模块和TestFX依赖:
plugins {
    id 'java'
    id 'org.openjfx.javafxplugin' version '0.1.0'
}

javafx {
    version = '21.0.1'
    modules = ['javafx.controls', 'javafx.graphics']
}

dependencies {
    testImplementation 'org.testfx:testfx-core:4.0.16-alpha'
    testImplementation 'org.testfx:testfx-junit5:4.0.16-alpha'
}

3. 验证VSCode测试配置

  • 在VSCode测试面板中,确认已选择你定义的testConfig作为运行配置。
  • 重启VSCode或重新加载项目,确保配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:50:33