0

私はMavenを使用して多言語のWebサイトを構築しています。

プロパティファイルは/src/ main/resourcesに保存されます

構築フェーズ中にMavenによって生成された戦争には、WEB-INF/classesの*.propertiesファイルが含まれています。このwarファイルを実稼働環境にデプロイしても、MissingResourceExceptionはスローされません。

したがって、このMissingResourceExceptionがある統合テスト中を除いて、すべてが正常に機能します。ちなみに、統合テストは、failsafe-maven-pluginのおかげで実行されます。

では、統合テストフェーズで何が問題になっているのでしょうか。

本当に奇妙なのは、統合テスト中に別のプロパティファイル(I18Nの目的ではない)をロードできることです。唯一の違いは、ResourceBundle.getBundleを使用する代わりに、FileReaderを使用することです。

私は何かが足りないのですか?

よろしくお願いします。

4

2 に答える 2

1

FileReaderでは、文字エンコードを設定できません。new InputStreamReader(new FileInputStream(file), "ISO-8859-1")明示的でOSに依存しない使用をお勧めします。そして、ISO-8859-1がプロパティの標準エンコーディングです(醜い)。

/ src / test / resourcesの他に、/ src / main/resourcesも見つける必要があります。

/ target / classesを確認しましたか?

コピーフェーズでエラーが発生した可能性があります(prepare-resources、prepare-test-resourcesなど)。多分クラス相対getClass().getResourceAsStream(relativePath)

于 2012-12-15T15:37:11.150 に答える
0

問題は、バンドルを取得するために使用したbaseNameだけでした。

ResourceBundle.getBundle( "/ MyBundle");

それ以外の

ResourceBundle.getBundle( "MyBundle");

それでも、コードの最初の行は.warがデプロイされているときはうまく機能しますが、統合テスト中は機能しないため、これは奇妙な動作です。誰かが理由を知っているなら、私は答えに本当に興味があります!

于 2012-12-15T23:15:11.623 に答える