我正在使用maven构建一个多语种网站。
属性文件存储在/ src / main / resources
中maven在构建阶段生成的战争包含WEB-INF / classes中的* .properties文件。如果我将此war文件部署到生产环境,则不会抛出MissingResourceException。
所以一切正常,除非在Integration测试中有MissingResourceException。顺便说一句,感谢failafe-maven-plugin执行集成测试。
那么在集成测试阶段会出现什么问题?
真正奇怪的是,我可以在集成测试期间加载另一个属性文件(不用于I18N目的)。唯一的区别是使用FileReader而不是使用ResourceBundle.getBundle。
我错过了什么吗?
提前感谢您的帮助。
答案 0 :(得分:1)
使用FileReader无法设置字符编码。更好地使用new InputStreamReader(new FileInputStream(file), "ISO-8859-1")
,这是明确的,独立于操作系统。而ISO-8859-1是属性的标准编码(丑陋)。
除了/ src / test / resources之外还应该找到/ src / main / resources。
你检查/目标/类吗?
复制阶段可能出现错误(准备资源,准备测试资源等)。
也许是一个班级亲属getClass().getResourceAsStream(relativePath)
?
答案 1 :(得分:0)
好的问题是“只是”我用来获取捆绑包的baseName:
ResourceBundle.getBundle( “/ MyBundle”);
而不是
ResourceBundle.getBundle( “MyBundle”);
然而,这是一种奇怪的行为,因为第一行代码在部署.war时运行良好,但在集成测试期间不行。如果有人知道为什么,我真的对答案很感兴趣!