找不到资源包异常

问题描述 投票:0回答:2

我想使用名为

strings
的资源包,但在
MainApplication.java
中运行我的主要方法时出现以下错误:

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

我的项目结构:

两个文件

strings.properties
strings_de_DE.properties
MainApplication.java
存储在同一目录中,所有三个文件都在
pi_display/src/logic/
目录中(IntelliJ将它们放入虚拟的“Resource Bundle”目录中,以便更清晰地显示项目结构)。

主要课程/方法:

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

我已经尝试将文件移动到其他包并指定捆绑包的

baseName
(即
logic.strings
或其他包结构,如果我将它们移动到其他地方)。

我不明白为什么找不到捆绑包,因为

MainApplication
并且捆绑包文件位于同一目录中。

java properties resources resourcebundle
2个回答
2
投票

您的捆绑包可能使用了错误的

baseName
。根据文档

使用指定的基本名称(默认)获取资源包 语言环境和调用者的类加载器

“类加载器”是指从包含已编译类的文件夹加载的资源。在屏幕截图中,资源的路径是

src/logic/strings.properties
,因此它应该位于
classes/logic/
文件夹中,并且作为基本名称,您应该使用
logic/strings
(或
logic/strings.properties
,我不确定)。


0
投票

@DeMO 和 @ochs.tobi - 我也面临同样的问题。你能帮我把资源包放到输出目录吗?

© www.soinside.com 2019 - 2024. All rights reserved.