- - PR -
リソースファイル名にディレクトリをつけると例外が発生します
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2002-03-12 17:01
ResourceBundle.getBundle のリソースファイル名にディレクトリをつけると MissingResourceException 例外が発生し次のメッセージが表示されます。
| Can't find bundle for base name c:\\java\\resource, locale ja ソースコードは次の通りです。 | import java.util.ResourceBundle; | import java.util.Locale; | | public class resource { | public static void main(String[] args) { | | ResourceBundle rs; | | rs = ResourceBundle.getBundle("c:\\\\java\\\\resource", new Locale("ja", "")); | | System.out.println(rs.getString("msg")); | } | } API や市販の本を当たってみましたが、リソースファイル名にディレクトリをつけている例は見当たりませんでした。 ディレクトリつきで指定する方法があれば教えていただけないでしょうか。 ちなみに上のコードは、ディレクトリを外せば動作します。 | ||||
|
投稿日時: 2002-03-12 20:46
今手元にあるのが英語しかないのでごめんなさい。これによるとリソースファイルはパッケージに含まれなければいけないのではないでしょうか?ディレクトリを指定する際にはクラスファイルを指定するように、"XXXX.YYY.resource"のようにしないといけないと思います。 | ||||
|
投稿日時: 2002-03-13 01:23
H2 さんもおっしゃってますが、リソースってクラスパスから検索されますよね。
これは、クラスファイルの検索に使うのと同じ機構を使ってるみたいです。 ので、CLASSES/jp/co/atmarkit/Example.class を示すのに jp.co.atmarkit.Example を 指定するのと同じように、java.resource.もげもげ とすべきです。 | ||||
|
投稿日時: 2002-03-13 02:23
>H2さん, しょむさん
コメントありがとうございます。 ご指摘の通り CLASSPATH にリソースファイルの置いてあるディレクトリを指定したら、リソースファイルがカレントディレクトリになくても動作するようになりました(例1)。 また CLASSPATH で指定したディレクトリを基準として、ドットを使った指定方法でも OK でした(例2)。 リソースファイルが c:¥java¥resource¥resource_ja.properties の場合、以下のどちらでも OK でした。 例1: set CLASSPATH=c:¥java¥resource getBundle("resource", new Locale("ja", "")); 例2: set CLASSPATH=c:¥java getBundle("resource.resource", new Locale("ja", "")); ちなみにAPIドキュメント(日本語)の java.util.ResourceBundle を再度読んでみましたが、リソースにファイルが使えるということに関しては一切書かれていないですね。私は「〜サーブレット&JSPではじめる〜Javaサーバーサイドプログラミング」のP.73を読んでリソースにファイルが使えることを知りました。 | ||||
1
