我想使用一个名为的资源包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
and 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
并且捆绑文件位于同一目录中。
你可能使用错误baseName
为你的捆绑包。根据文档 https://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html#getBundle-java.lang.String-java.util.Locale-:
使用指定的基本名称(默认)获取资源包
语言环境和调用者的类加载器
“类加载器”是指从包含已编译类的文件夹加载的资源。在屏幕截图中,资源的路径是src/logic/strings.properties
,所以它应该位于classes/logic/
文件夹,并作为基本名称,您应该使用logic/strings
(or logic/strings.properties
, 对此我不确定)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)