我想使用一个名为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“目录中,以便更清晰地显示项目结构)。
主要类别/方法:
public class MainApplication {
public static void main(String[] args) {
Locale locale = Locale.GERMANY;
ResourceBundle resources = ResourceBundle.getBundle("strings", locale);
// ...
}我已经尝试将文件移动到其他包中,并指定包的baseName (即logic.strings或其他包结构(如果我将它们移到其他地方)。
我不明白为什么在给定MainApplication时无法找到包,而包文件位于同一个目录中。
发布于 2018-01-10 10:36:38
您可能在包中使用了错误的baseName。根据文档
使用指定的基本名称、默认区域设置和调用方的类加载器获取资源包。
“类加载器”是指从带有已编译类的文件夹中加载的资源。在屏幕截图中,您的资源的路径是src/logic/strings.properties,所以它应该位于classes/logic/文件夹中,并且作为baseName,您应该使用logic/strings (或logic/strings.properties,我不确定)。
https://stackoverflow.com/questions/48184900
复制相似问题