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

如何解决JavaFX模块化项目JLink打包后MySQL JDBC驱动缺失问题

解决方案

问题根因

jlink 仅会打包模块化JAR或自动模块,且只包含--add-modules指定模块及其依赖链内的模块。你的MySQL驱动要么未被项目模块声明依赖,要么未被jlink纳入打包范围,导致运行时无法找到JDBC驱动。

步骤1:修改module-info.java声明MySQL驱动依赖

根据你使用的MySQL Connector/J版本,添加对应依赖语句:

  • 8.0.23及以上版本(模块化驱动):驱动自带module-info.java,模块名为com.mysql.cj.jdbc,需在模块声明中添加:
    module projectTMIP {
        // 保留原有依赖
        requires javafx.controls;
        requires java.sql;
        requires javafx.fxml;
        requires javafx.graphics;
        requires transitive javafx.base;
    
        // 添加MySQL驱动依赖
        requires com.mysql.cj.jdbc;
    
        opens model to javafx.graphics, javafx.fxml;
        opens controller to javafx.fxml;
        exports controller;
    }
    
  • 8.0.23以下版本(非模块化驱动):驱动无module-info.java,会被识别为自动模块,模块名由JAR文件名推导(通常为mysql.connector.java),需添加:
    module projectTMIP {
        // 保留原有依赖...
    
        // 添加自动模块依赖
        requires mysql.connector.java;
    }
    

步骤2:调整jlink命令,确保驱动被纳入打包

在--add-modules中显式包含MySQL驱动模块,同时确认--module-path正确指向驱动JAR:

# 模块化驱动版本示例(Windows环境)
jlink --module-path "path/to/jmod";"path/to/mysql-connector-java-xxx.jar";bin --add-modules projectTMIP,com.mysql.cj.jdbc --output output/image --launcher run=projectTMIP/model.Main

# 非模块化驱动版本示例(Windows环境)
jlink --module-path "path/to/jmod";"path/to/mysql-connector-java-xxx.jar";bin --add-modules projectTMIP,mysql.connector.java --output output/image --launcher run=projectTMIP/model.Main

注:Linux/macOS环境下,路径分隔符需使用:而非;

额外注意事项

  • 确保MySQL驱动JAR的路径拼写正确,避免相对路径错误
  • JDBC 4.2+虽支持自动加载驱动,但在模块化环境下必须通过requires声明依赖,否则DriverManager无法扫描到驱动类

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:30:38