- PR -

ResourceBundle#getBundleでのリソース参照順序

1
投稿者投稿内容
Tanaka
会議室デビュー日: 2003/01/26
投稿数: 7
お住まい・勤務地: 神奈川・新宿
投稿日時: 2003-10-20 18:31
Tanakaと申します。

java.util.ResourceBundle について質問があります。

次のような条件で実行してたところ、MissingResourceException が
発生します。

OS
 Windows 2000 Server
JDK
 1.3
CLASSPATH
 ./;C:/java_classes
デフォルトロケール
 ja_JP
リソースファイル
 C:/java_classes/mypackage/MyResource.properties

問題のコードの例
 java.util.ResourceBundle myResource
  = java.util.ResourceBundle.getBundle("mypackage.MyResource");

ここで、リソースファイル名を "MyResource_ja.properties" に変更した
ところ例外が発生せずに動作しました。
"MyResource_ja_JP.properties" でも例外が発生しました。

私は、上述した条件だと以下のようにリソースファイルを参照しに行くものと
思っていましたし、API リファレンスにも以下のような順序で参照しに行くように
書いてあったと思います。

1.mypackage.MyResource_ja_JP クラス
2.mypackage.MyResource_ja_JP.properties ファイル
3.mypackage.MyResource_ja クラス
4.mypackage.MyResource_ja.properties ファイル
5.mypackage.MyResource クラス
6.mypackage.MyResource.properties ファイル

ですが、mypackage.MyResource_ja.properties ファイル以外では、
例外が発生してしまいます。(クラスは試していません)
また、同一OS、同一JDKでも例外が発生するマシンと発生しないマシンがあります。
ResourceBundle#getBundle 呼び出し時にロケールを渡す以外の方法で、
このリソースファイルの参照順序を制御する設定などがあるのでしょうか?
有識者の方のご享受をお願いいたします。

_________________
--
Tanaka
とまと
ベテラン
会議室デビュー日: 2003/10/18
投稿数: 51
投稿日時: 2003-10-20 19:25
こんばんは。

原因、解決策はわかりませんが。。。

私の環境(ロケールはja_JP)では、
*_ja_JP.properties
*_ja.properties
*.properties
の3つのパターンに対して、MissingResourceExceptionは
発生しませんでした。
また、この順番で参照しにいきました。
ただ私の環境は次の通りです。
Windows XP Professional, JSDK1.4.2, ja_JP(デフォルトロケール)

一番あやしいのはやはりデフォルトロケールでしょうか。
ResourceBundle取得直前で、
System.out.println(Locale.getDefault().toString());
などとして、デフォルトロケールは確認されたでしょうか。

バグレポートを検索してみると
なにか見つかるかもしれませんね。
1

スキルアップ/キャリアアップ(JOB@IT)