- - PR -
ResourceBundle -> MissingResourceException
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-10-24 12:40
現象は簡単なのですが、解決方法に行き詰まってしまいましたので、
お知恵をお貸し下さい。 Windows XP Home / J2SDK 1.4.2_02 / ja_JP(デフォルト) の環境にて、
実行結果
現象は「参照先ファイルが見つからない」に尽きるのですが、 参照先を絶対パスにしても、ファイル名をhogehoge_ja_JP等に変更しても ダメでした。 実行クラスは環境上で唯一であり、「実は同名の別クラスを起動していた」ことは ないと確認しています。 カレントディレクトリは起動バッチと同じです。 他に環境設定等で確認すべき事項がありましたら、ご教示頂けないでしょうか。 | ||||||||
|
投稿日時: 2003-10-24 12:48
>private ResourceBundle prop = ResourceBundle.getBundle("lib/" + filename);
を private ResourceBundle prop = ResourceBundle.getBundle("lib." + filename); にするとどうですかね・・・ | ||||||||
|
投稿日時: 2003-10-24 14:10
早速のご返答、ありがとうございます。
ご教示頂いた通りに試してみましたが、以下のように 同じ結果となってしまいました。 その後、同じようなロジックで正常に動作していたものを この環境で動かしてみたところ、全く同じエラーが 発生しましたので、ロジックではない他(環境?)の問題では ないかと考えています。 J2SDK のバージョンを下げることも試してみたほうがよいでしょうか? なるべく現在の環境を壊したくないのですが。
| ||||||||
|
投稿日時: 2003-10-24 14:32
こんにちは。
クラスパスに関する情報が記述されていないのですが、 c:\tmp\lib\hogehoge.properties という場合 もちろん、c:\tmpにクラスパスは通っているのですよね? ※でも、絶対パスで指定するとか言ってるから かなり怪しかったりして(笑)。 [追記] 上記の例では、 ResourceBundle prop = ResourceBundle.getBundle("lib.hogehoge"); としてリソースバンドルを取得することを前提にしています。 [ メッセージ編集済み 編集者: とまと 編集日時 2003-10-24 14:58 ] | ||||||||
|
投稿日時: 2003-10-24 14:59
当然、クラスパスは通っています。
(意味なく絶対パスを指定してみるほど、ネタに困っているということです。 ちなみに、propertiesファイルを様々なlibフォルダに入れてみたりもしました。) Windows環境変数、起動バッチで設定しているクラスパス、起動しているjava.exe Locale等、周りの人間も巻き込んで考えられる限り調べているのですが。。。 | ||||||||
|
投稿日時: 2003-10-24 15:03
これは様々libフォルダにいれて、 プログラムを起動するときに そのたびに java -classpath .;(libフォルダの親フォルダ) mypackage.foo と指定したけどうまくいかなかったということですよね。 私の環境はWindows XP Professional, JSDK1.4.2, ja_JPですが、 問題なくリソースファイルを参照できています。 | ||||||||
|
投稿日時: 2003-10-24 15:11
ちょっとクラスパスとgetBundleについて確認というかまとめると
・getBundle は クラスパスから検索に行きます ・プログラムにnamespaceがついている場合は 大抵ルート部分にしかクラスパスが通っていないので namespace付きで指定する必要があります。 例えば 全然関係ないパスのlibに入れた場合は ・classpathにlibの親フォルダを指定し"lib." + filename ・classpathにlibのフォルダを指定しfilename プログラムの配下にlibフォルダがある場合は ・namespaceあり ・classpathにlibの親フォルダを指定し"namespace.lib." + filename ・classpathにlibのフォルダを指定しfilename ・namespaceなしは ・classpathにプログラムのフォルダを指定し"lib." + filename ・classpathにlibのフォルダを指定しfilename という風になります。 | ||||||||
|
投稿日時: 2003-10-24 15:26
たくさんのご返答、本当にありがとうございました。
現象が単純だけに、結果もやっぱりアホな結果に終わりました。 ご返答の中で、バージョンによる差異ということではないという ことを教えていただきましたので、 バッチと環境変数を最初から調査し直しました。 すると、ネットワークドライブを指定している箇所があり、 案の定、それを外すと上手く行きました。 もう恥しいやら自分に腹が立つやら・・・ お騒がせしました。 何とか明日の休日出勤だけは免れたようです。 本当にありがとうございました。 | ||||||||
