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
相关产品推荐
相关产品推荐

