MissingResourceException - 在maven集成测试阶段找不到Bundle

时间:2012-12-15 15:28:14

标签: maven

我正在使用maven构建一个多语种网站。

属性文件存储在/ src / main / resources

maven在构建阶段生成的战争包含WEB-INF / classes中的* .properties文件。如果我将此war文件部署到生产环境,则不会抛出MissingResourceException。

所以一切正常,除非在Integration测试中有MissingResourceException。顺便说一句,感谢failafe-maven-plugin执行集成测试。

那么在集成测试阶段会出现什么问题?

真正奇怪的是,我可以在集成测试期间加载另一个属性文件(不用于I18N目的)。唯一的区别是使用FileReader而不是使用ResourceBundle.getBundle。

我错过了什么吗?

提前感谢您的帮助。

2 个答案:

答案 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时运行良好,但在集成测试期间不行。如果有人知道为什么,我真的对答案很感兴趣!