将项目导出到 jar 时遇到问题。当我在 Eclipse 中运行项目时,ResourceBundles 工作正常,但不能从 jar 运行。我将其导出为 Export -> jar 文件。
我在 (Windows) cmd -> java -jar %projectName%.jar 中启动 jar。资源包是:
- Eclipse:%projectName% -> src -> 语言
- 在 jar 中:文件夹语言。
我这样加载它:
ResourceBundle.getBundle("language.Language", currentLocale)
我在 Stackoverflow 上查看了很多与此相关的其他问题,他们的问题始终是他们没有提供从根开始的路径。我不知道为什么这不起作用。我也尝试将这些 .properties 文件放在根目录下...
注意:管理这些包/区域设置的类也在相同的包中。
提前致谢。
编辑:也许一些额外的信息,我通过这种方式获取字符串:
public static String getString(String key) {
try {
return ResourceBundle.getBundle("language.Language", currentLocale)
.getString(key);
} catch (MissingResourceException e) {
return "KEY " + key + " NOT FOUND !";
}
}
堆栈跟踪:
Exception in thread "main" java.util.MissingResourceException: Can't find bundle
for base name language.Language, locale nl_be
at java.util.ResourceBundle.throwMissingResourceException(Unknown Source)
at java.util.ResourceBundle.getBundleImpl(Unknown Source)
at java.util.ResourceBundle.getBundle(Unknown Source)
at language.LanguageModel.getString(LanguageModel.java:33)
at cli.class.method(class.java:35)
at main.Main.main(Main.java:26)
属性:
Language_en_US.properties
Language_fr_FR.properties
Language_nl_BE.properties
....
最佳答案
您在参数中传递给 ResourceBundle.getBundle()
的区域设置将其国家/地区设置为“be”。应将其设置为“BE”。
您还应该考虑使用仅带有语言代码后缀的属性文件,并拥有一个完全不带后缀的备份包:
- 语言:将在最后手段下使用
- Language_nl:当语言为“nl”时使用
- Language_nl_BE:如果特定于比利时,则应覆盖 Language_nl 的翻译
关于java - jar 中找不到 ResourceBundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15442766/