国际化java。util。MissingResourceException:找不到基名称的捆绑包
我正在测试Java的i18n特性,但遇到了一个问题,当语言文件不在类根中时,我无法加载它。现在我的文件在/lang
目录中
在这里查找了几个答案,将其放在classes
子目录中,像lang.Messages
一样加载,使用完整的位置路由/Test/lang/Message
(test是项目名称),只使用/lang/Message
,我仍然得到了:
java.util.MissingResourceException: Can't find bundle for base name
错误
还有什么可以试试的吗
我的文件结构是:
Test/lang/Messages_es.properties
Test/src/test/Main.java
import java.util.Locale;
import java.util.ResourceBundle;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
Locale currentLocale;
ResourceBundle messages;
currentLocale = new Locale("es");
messages = ResourceBundle.getBundle("Messages", currentLocale);
System.out.println(messages.getString("Messagesgreetings"));
System.out.println(messages.getString("Messagesinquiry"));
System.out.println(messages.getString("Messagesfarewell"));
}
}
# 1 楼答案
您需要在属性文件名中包含区域设置名称
将属性文件重命名为
Messages_es.properties
由于没有声明任何包,编译的类文件和属性文件都可以位于同一根目录中
根据评论进行编辑:
假设你有这样的项目结构:
test\src\foo\Main.java
(foo
是包名)test\bin\resources\Messages_es.properties
(属性文件在类路径的resources
文件夹中)您可以通过以下方式运行此功能:
更新的源代码:
如您所见,我们正在加载名为“resources.Messages”的属性文件
希望这有帮助