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

javafx:jlink打包JavaFX应用时JDBC驱动缺失问题求助

解决方案

问题根源是javafx:jlink打包时默认只包含模块化依赖,而MariaDB/MySQL驱动属于自动模块,不会被自动纳入自定义运行时镜像,导致运行时找不到驱动类。

1. 修改pom.xml的javafx-maven-plugin配置

在插件的configuration节点里,显式指定要包含的驱动模块:

<plugin>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>0.0.8</version>
    <configuration>
        <mainClass>org.leder.gldisplaymanager/org.leder.gldisplaymanager.Main</mainClass>
        <!-- 新增模块路径配置 -->
        <modulePath>
            <modulePath>${project.build.directory}/modules</modulePath>
        </modulePath>
        <!-- 加入MariaDB驱动的自动模块 -->
        <addModules>
            <addModule>org.mariadb.jdbc</addModule>
            <!-- 若用MySQL驱动,替换为mysql.connector.java -->
        </addModules>
    </configuration>
</plugin>

2. 先打包依赖再生成jlink镜像

执行以下命令,确保驱动被复制到模块路径后再打包:

mvn clean package javafx:jlink

补充说明

javafx:run能正常工作是因为它使用完整的Maven类路径,自动包含所有依赖,不受模块化限制;而jlink只构建最小化的运行时镜像,必须显式声明所有要包含的模块(包括自动模块)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 13:28:10