找不到资源包异常
Can't find resource bundle exception
我想使用一个名为 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”目录,以更清晰地显示项目结构。
主要class/method:
public class MainApplication {
public static void main(String[] args) {
Locale locale = Locale.GERMANY;
ResourceBundle resources = ResourceBundle.getBundle("strings", locale);
// ...
}
我已经尝试将文件移动到其他包并指定包的 baseName
(即 logic.strings
或其他包结构,如果我将它们移动到其他地方)。
我不明白为什么找不到包 MainApplication
并且包文件在同一目录中。
您的捆绑包可能使用了错误的 baseName
。根据documentation:
Gets a resource bundle using the specified base name, the default
locale, and the caller's class loader
"Class loader" 表示资源从编译后的文件夹中加载 类。在屏幕截图中,您的资源路径是 src/logic/strings.properties
,因此它应该位于 classes/logic/
文件夹中,作为 baseName 您应该使用 logic/strings
(或 logic/strings.properties
,我'我不确定)。
我想使用一个名为 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”目录,以更清晰地显示项目结构。
主要class/method:
public class MainApplication {
public static void main(String[] args) {
Locale locale = Locale.GERMANY;
ResourceBundle resources = ResourceBundle.getBundle("strings", locale);
// ...
}
我已经尝试将文件移动到其他包并指定包的 baseName
(即 logic.strings
或其他包结构,如果我将它们移动到其他地方)。
我不明白为什么找不到包 MainApplication
并且包文件在同一目录中。
您的捆绑包可能使用了错误的 baseName
。根据documentation:
Gets a resource bundle using the specified base name, the default locale, and the caller's class loader
"Class loader" 表示资源从编译后的文件夹中加载 类。在屏幕截图中,您的资源路径是 src/logic/strings.properties
,因此它应该位于 classes/logic/
文件夹中,作为 baseName 您应该使用 logic/strings
(或 logic/strings.properties
,我'我不确定)。