找不到资源包异常

时间:2018-01-10 10:08:06

标签: java properties resources resourcebundle

我想在我的java应用程序中使用一个名为“strings”的资源包。 我的项目结构如下所示:

project structure

两个文件 strings.properties strings_de_DE.properties MainApplication.java 存储在同一目录中(Intellij将它们放入虚拟“资源包”目录,用于更清晰地显示项目结构)。所以这三个文件都在 pi_display / src / logic / 目录中。

MainApplication 如下所示:

public class MainApplication {
    public static void main(String[] args) {
        Locale locale = Locale.GERMANY;
        ResourceBundle resources = ResourceBundle.getBundle("strings", locale);
        // ...
    }

但是在启动程序时出现以下错误:

java.util.MissingResourceException: Can't find bundle for base name strings, locale de_DE
    at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1564)
    at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1387)
    at java.util.ResourceBundle.getBundle(ResourceBundle.java:845)
    at logic.MainApplication.start(MainApplication.java:20) (...)

我已经尝试将文件移动到其他包并指定包的baseName(即“logic.strings”或其他包结构,如果我将它们移动到别处)。但 MainApplication 和捆绑文件在同一目录中,所以我不明白为什么无法找到捆绑包。

1 个答案:

答案 0 :(得分:2)

您的捆绑包可能使用了错误的baseName。 根据文件:Gets a resource bundle using the specified base name, the default locale, and the caller's class loader" Classloader"表示从具有已编译类的文件夹加载的资源,在资源src/logic/strings.properties的屏幕截图路径中,因此它应位于classes/logic/文件夹中,作为baseName,您应使用logic/strings(或{{ 1}},我不确定那个)