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

非模块化Maven项目引入javafx.web遇jdk.jsobject缺失错误求解

JavaFX 26.0.1非模块化项目引入javafx.web启动报错解决方案

问题根源

JavaFX 26.0.1版本中,jdk-jsobject被重构为模块化JAR文件,而非模块化项目启动时,JVM默认仅从类路径加载资源,不会自动识别模块化JAR的模块声明。而javafx.web依赖jdk.jsobject模块,导致启动层初始化时找不到该模块,抛出java.lang.module.FindException。

解决方案

无需转为模块化项目,只需调整Maven配置,在启动时显式告知JVM加载jdk.jsobject模块,即可兼容非模块化旧依赖的场景。

步骤1:修改javafx-maven-plugin配置

在项目POM的javafx-maven-plugin中添加vmArgs参数,指定加载jdk.jsobject模块:

<plugin>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>0.0.8</version>
    <executions>
        <execution>
            <id>default-cli</id>
            <configuration>
                <mainClass>com.nowhere.mavenprojectseven.App</mainClass>
                <!-- 添加VM参数,显式加载jdk.jsobject模块 -->
                <vmArgs>--add-modules jdk.jsobject</vmArgs>
            </configuration>
        </execution>
    </executions>
</plugin>

步骤2:(可选)显式声明jdk-jsobject依赖

虽然依赖树中已包含该依赖,但显式声明能确保版本一致性,避免潜在依赖冲突:

<dependencies>
    <!-- 原有javafx依赖 -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>26.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-web</artifactId>
        <version>26.0.1</version>
    </dependency>
    <!-- 显式添加jdk-jsobject运行时依赖 -->
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>jdk-jsobject</artifactId>
        <version>26.0.1</version>
        <scope>runtime</scope>
    </dependency>
</dependencies>

验证

执行命令 mvn clean javafx:run,项目应能正常启动,不再出现模块找不到的错误。

补充说明

JavaFX 26.x系列对模块化支持进行了调整,部分辅助依赖转为模块化,但非模块化项目仍可通过显式指定模块加载参数正常运行,无需强制重构为模块化结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 03:17:27