我想在我的java应用程序中使用一个名为“strings”的资源包。 我的项目结构如下所示:
两个文件 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 和捆绑文件在同一目录中,所以我不明白为什么无法找到捆绑包。
答案 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}},我不确定那个)