使用GluonFX构建Windows程序时ICU俄文资源包找不到求助
解决GluonFX构建后运行ICU资源包缺失问题
问题根源
GraalVM的资源包扫描逻辑会将完整Locale(如ru_RU)简化为语言代码ru,但ICU库的资源包是按完整Locale命名的com.ibm.icu.impl.data.icudt65b.ru_RU,导致构建时扫描不到对应资源,最终运行时抛出缺失异常。你之前尝试的配置错误地使用了简化语言代码和文件后缀,导致匹配失败。
解决方案
方案1:在pom.xml中指定完整资源包名称
修改gluonfx-maven-plugin的配置,在<bundlesList>中添加完整的ICU资源包名称(不带.res后缀):
<plugin> <groupId>com.gluonhq</groupId> <artifactId>gluonfx-maven-plugin</artifactId> <version>1.0.19</version> <configuration> <!-- 保留你的其他配置项 --> <bundlesList> <bundle>com.ibm.icu.impl.data.icudt65b.ru_RU</bundle> </bundlesList> </configuration> </plugin>
执行mvn clean gluonfx:build重新构建即可。
方案2:通过资源包配置文件指定
修改src/main/resources/META-INF/substrate/config/resourcebundles文件,写入完整资源包名称:
com.ibm.icu.impl.data.icudt65b.ru_RU
同样重新构建程序。
方案3:强制保留所有ICU资源包(适合快速验证)
如果不需要严格控制资源体积,可直接配置保留ICU的所有data资源:
<plugin> <groupId>com.gluonhq</groupId> <artifactId>gluonfx-maven-plugin</artifactId> <version>1.0.19</version> <configuration> <!-- 保留你的其他配置项 --> <resources> <resource> <pattern>com/ibm/icu/impl/data/icudt65b/*.res</pattern> </resource> </resources> </configuration> </plugin>
为什么之前的配置失败
- 你添加的
com/ibm/icu/impl/data/icudt65b/ru.res路径错误,实际存在的资源是ru_RU.res,且<bundlesList>中应填写资源包的逻辑名称(com.ibm.icu.impl.data.icudt65b.ru_RU),而非文件路径。 - GluonFX自动扫描时会简化Locale名称,需要手动指定完整Locale的资源包来覆盖这一逻辑。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

