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

使用Gluonfx打包JavaFX应用时遇MySQL pt_BR资源包缺失错误

解决GluonFX打包JavaFX应用后MySQL驱动找不到pt_BR本地化资源的问题

问题场景

使用GluonFX将带有Maven依赖的JavaFX应用打包为单文件后,执行mvn gluonfx:nativerun启动应用,触发数据库连接操作时抛出以下错误:

[seg. dez. 18 14:50:57 BRT 2023][INFO] [SUB] Caused by: java.lang.RuntimeException: Can't load resource bundle due to underlying exception java.util.MissingResourceException: Can't find bundle for base name com.mysql.cj.LocalizedErrorMessages, locale pt_BR
[seg. dez. 18 14:50:57 BRT 2023][INFO] [SUB]    at com.mysql.cj.Messages.<clinit>(Messages.java:60)
[seg. dez. 18 14:50:57 BRT 2023][INFO] [SUB]    ... 64 more
[seg. dez. 18 14:50:57 BRT 2023][INFO] [SUB] Caused by: java.util.MissingResourceException: Can't find bundle for base name com.mysql.cj.LocalizedErrorMessages, locale pt_BR
[seg. dez. 18 14:50:57 BRT 2023][INFO] [SUB]    at java.base@17.0.9/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2045)
[seg. dez. 18 14:50:57 BRT 2023][INFO] [SUB]    at java.base@17.0.9/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1683)
[seg. dez. 18 14:50:57 BRT 2023][INFO] [SUB]    at java.base@17.0.9/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1586)
[seg. dez. 18 14:50:57 BRT 2023][INFO] [SUB]    at java.base@17.0.9/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1549)
[seg. dez. 18 14:50:57 BRT 2023][INFO] [SUB]    at java.base@17.0.9/java.util.ResourceBundle.getBundle(ResourceBundle.java:858)
[seg. dez. 18 14:50:57 BRT 2023][INFO] [SUB]    at com.mysql.cj.Messages.<clinit>(Messages.java:58)
[seg. dez. 18 14:50:57 BRT 2023][INFO] [SUB]    ... 64 more

经确认,LocalizedErrorMessages_pt_BR.properties并非mysql-connector-j原生提供的文件,修改<default-locale>或VM区域设置无法解决问题。

解决方案

方法1:强制MySQL驱动使用英文资源包

在JDBC连接URL中添加locale参数,强制驱动使用英文本地化资源,跳过对pt_BR资源的查找:

String url = "jdbc:mysql://localhost:3306/your_db?useUnicode=true&characterEncoding=utf8&locale=en_US";
Connection conn = DriverManager.getConnection(url, username, password);

或者通过连接属性设置:

Properties props = new Properties();
props.setProperty("user", username);
props.setProperty("password", password);
props.setProperty("locale", "en_US");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_db", props);

方法2:添加自定义pt_BR本地化资源文件

在项目的src/main/resources/com/mysql/cj目录下创建LocalizedErrorMessages_pt_BR.properties文件,可直接复制mysql-connector-j中LocalizedErrorMessages_en_US.properties的内容并修改为葡萄牙语(巴西)版本,或仅创建空文件(驱动会自动 fallback 到默认资源)。GluonFX打包时会自动将该文件包含到最终可执行文件中,解决资源缺失问题。

方法3:配置GluonFX Maven插件强制包含资源

在pom.xml的gluonfx-maven-plugin配置中,显式指定需要包含的资源目录,确保MySQL驱动的资源文件被正确打包:

<plugin>
    <groupId>com.gluonhq</groupId>
    <artifactId>gluonfx-maven-plugin</artifactId>
    <version>1.0.21</version> <!-- 使用最新稳定版本 -->
    <configuration>
        <mainClass>com.yourpackage.MainApplication</mainClass>
        <resources>
            <!-- 包含项目自身资源 -->
            <resource>
                <directory>${project.basedir}/src/main/resources</directory>
            </resource>
            <!-- 显式包含MySQL驱动的资源 -->
            <resource>
                <directory>${maven.dependency.com.mysql.mysql-connector-j.path}</directory>
                <includes>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>
    </configuration>
</plugin>

版本注意事项

确保使用的mysql-connector-j版本为8.x系列(如8.0.30+),该版本对资源加载逻辑的兼容性更好,避免因版本差异导致的资源查找问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:56:26