0

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

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

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

因此,除了在存在 MissingResourceException 的集成测试期间一切正常。顺便说一句,由于 failsafe-maven-plugin 可以执行集成测试。

那么在集成测试阶段出了什么问题呢?

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

我错过了什么吗?

在此先感谢您的帮助。

4

2 回答 2

1

使用 FileReader 无法设置字符编码。更好地使用new InputStreamReader(new FileInputStream(file), "ISO-8859-1"),这是明确的,独立于操作系统的。而 ISO-8859-1 是属性的标准编码(丑陋)。

除了 /src/test/resources 还应该找到 /src/main/resources。

你检查/target/classes 了吗?

复制阶段可能出错(准备资源、准备测试资源等)。也许是类亲戚getClass().getResourceAsStream(relativePath)

于 2012-12-15T15:37:11.150 回答
0

好的,问题是“只是”我用来获取捆绑包的 baseName :

ResourceBundle.getBundle("/MyBundle");

代替

ResourceBundle.getBundle("MyBundle");

然而,这是一个奇怪的行为,因为第一行代码在部署 .war 时运行良好,但在集成测试期间却不行。如果有人知道为什么,我对答案真的很感兴趣!

于 2012-12-15T23:15:11.623 回答