2011-12-19 4 views
0

リソースバンドルにアクセスするときにMissingResourceExceptionが発生します。この問題は、私の特定のクラスローダーのコンストラクションのために発生します。クラスローダーのコンストラクション(WEB-INF/classesにない呼び出し側)によるMissingResourceException

JBOSS_HOME/server/myServer/myDeployDir/myEAR/myJAR.jar(注:呼び出し側クラスはWEB-INF/classesにありません)にあるクラス内からtext.propertiesを読み込もうとしています。 text.propertiesファイルは、JBOSS_HOME/server/myServer/myDeployDir/myEAR/myWAR/WEB-INF/classesにあります。次のコードを実行している場合

:私は、次の

残念ながら
java.util.MissingResourceException: Can't find bundle for base name text, locale de_DE. 

を取得

Locale locale = new Locale ("de", "DE"); 
ResourceBundle rb = ResourceBundle.getBundle(textproperties, locale); 

を、私は自分のアプリケーションの構造を変更しないでください。私は呼び出し元クラス(今はmyJAR.jar)をWEB-INF/classesに移動することも、プロパティファイルをmyJAR.jarにパックすることもできません。外部のWEB-INF/classesからプロパティファイルにアクセスする方法はありますか?

アプリケーションはJBoss 4.2.3で動作しますので、Webサーバのスレッド処理を念頭に置いておく必要があります。事前にあなたの助けのための

おかげで、 グンナー

答えて

3

あなたはgetBundleに追加するパラメータとして使用するクラスローダを指定することができます。 Webアプリケーションでは、これは現在のスレッドのコンテキストクラスローダーである可能性が最も高いでしょう:

ClassLoader cl = Thread.currentThread().getContextClassLoader(); 
ResourceBundle rb = ResourceBundle.getBundle(textproperties, locale, cl); 
+0

こんにちはJörn、あなたの助けをありがとう。私は今プロパティファイルにアクセスできます。 – user1105607

+1

@ user1105607あなたはJornの回答を受け入れるべきです。 –

関連する問題