我目前正在开展多语言项目。我将资源文件存储在文件夹res/i18n/Language
中,并使用此方法获取当前区域设置的包:
public static ResourceBundle getResourceBundle() {
Locale currentLocale = new Locale(Locale.getDefault().getLanguage());
return ResourceBundle.getBundle("i18n/Language", currentLocale);
}
一切正常。但是我也有一个多语言的库,它的资源使用相同的结构。
现在,当我在具有多语言System.out.println()
的内容上调用toString()
时,即使该密钥存在,应用程序也会以MissingResourceException
崩溃。有关资源包的所有测试均通过。
我现在已经将库中的文件夹从res/i18n/Language
重命名为res/i18n-l/Language
,重新打包了罐子,并猜测是什么,现在一切正常。
我调用ResourceBundle的方式是否存在根本问题。我也问过我的大学教授,他说这不应该发生......有没有人以前遇到过这个问题,还是应该用不同的方式写这个方法?
项目及其库在Java 10下用maven打包