Java国际化开发中properties配置文件的正确存放位置是什么?
Java国际化MissingResourceException报错原因及解决方案
报错原因
1. 拼写匹配错误
你抛出的异常提示找不到base name为messages的资源,但你代码中ResourceBundle.getBundle的第一个参数写的是MessagesBundle,首先确认实际运行的代码中该参数是否拼写错误,参数值需要和配置文件的前缀MessagesBundle完全一致,大小写敏感。
2. 资源路径不匹配
如果拼写无误,错误来源于资源加载路径的规则限制:ResourceBundle.getBundle传入纯文件名时,默认从项目编译后的类路径根目录查找配置文件,你把properties文件放在了tests包对应的子目录下,不属于类路径根目录,因此无法被加载到。
正确的配置文件存放方案
你可以选择以下任意一种方案解决问题:
- 方案1:配置文件放类路径根目录
保持代码中getBundle("MessagesBundle")的写法不变,将所有MessagesBundle_xx_XX.properties文件放到项目类路径根目录即可。如果是Maven/Gradle项目,对应路径为src/main/resources;普通Java项目放在编译后class文件生成的根目录,和tests文件夹同级。 - 方案2:配置文件保留在tests包目录下
如果你要把配置文件和I18NSample类放在同一个包路径下,需要修改getBundle的参数,加上包路径前缀:messages = ResourceBundle.getBundle("tests.MessagesBundle", currentLocale);
额外注意:确认你的项目构建配置不会过滤掉properties文件,所有properties文件需要被正常复制到编译后的输出目录才能被加载。
内容的提问来源于stack exchange,提问作者cover
相关产品推荐
相关产品推荐

