java - jar 中找不到 ResourceBundle

标签 java resourcebundle

将项目导出到 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/

相关文章:

java - hibernate 5.2.2 : ManyToOne first example

java - 在运行时刷新 Swing 元素的语言

java - log4j2 错误 StatusLogger 未找到 log4j2 配置文件且 ResourceBundle 错误

java - Maven 多模块项目结构化问题

java - 需要具有 FBO 扩展的 OpenGL 2.0 或更高版本 - LibGDX 错误

来自 C++ 客户端的 Java DataInputStream readInt() 获得了巨大的值(value)

swift - iOS 13 上的自定义 bundle 中的 Xcode 11 : Failed to instantiate image from asset catalog (. 汽车文件)

java - Struts 2 在操作类或 bean 中使用 getText

objective-c - 锁定 Cocoa 中的嵌入资源

java - 以编程方式禁用 "volume key shortcut"