在jar中找不到ResourceBundle

时间:2013-03-15 22:00:07

标签: java resourcebundle

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

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

  • Eclipse:%projectName% - > src - >语言
  • 在jar:文件夹语言中。

我以这种方式加载它:

ResourceBundle.getBundle("language.Language", currentLocale)

我在Stackoverflow上查看了很多关于此问题的其他问题,他们的问题始终是他们没有从根提供路径。我不知道为什么这不起作用。我尝试将这些.properties文件也放在root ...

注意:管理这些bundle / locales的类也在同一个包中。

提前致谢。

编辑:也许是一些额外的信息,我这样得到了字符串:

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

1 个答案:

答案 0 :(得分:3)

您在ResourceBundle.getBundle()参数中传递的区域设置将其国家/地区设置为“be”。它应该设置为“BE”。

您还应考虑使用仅包含langage代码后缀的属性文件,并且根本没有后缀的备份包:

  • 语言:将在最后使用
  • Language_nl:将在语言为“nl”
  • 时使用
  • Language_nl_BE:如果特定于比利时
  • ,则应覆盖Language_nl的翻译