1

将项目导出到 jar 时遇到问题。当我在 Eclipse 中运行项目时,ResourceBundles 工作正常,但不是从 jar 中运行。我将其导出为 Export -> jar 文件。

我在 (Windows) cmd -> java -jar %projectName%.jar 中启动 jar。资源包是:

  • Eclipse:%projectName% -> src -> 语言
  • 在罐子里:文件夹语言。

我这样加载它:

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
....
4

1 回答 1

3

您传入参数的语言环境将ResourceBundle.getBundle()其国家/地区设置为“be”。它应该设置为“BE”。

您还应该考虑使用仅带有语言代码后缀的属性文件,并拥有一个完全没有后缀的备份包:

  • 语言:将在最后使用
  • Language_nl :将在语言为“nl”时使用
  • Language_nl_BE :如果 Language_nl 特定于比利时,则应覆盖它们的翻译
于 2013-03-15T22:31:09.027 回答