- PR -

リソースファイル名にディレクトリをつけると例外が発生します

1
投稿者投稿内容
katsum
大ベテラン
会議室デビュー日: 2002/02/27
投稿数: 119
お住まい・勤務地: 東京都
投稿日時: 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 や市販の本を当たってみましたが、リソースファイル名にディレクトリをつけている例は見当たりませんでした。

ディレクトリつきで指定する方法があれば教えていただけないでしょうか。

ちなみに上のコードは、ディレクトリを外せば動作します。
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2002-03-12 20:46
引用:

java.util.ResourceBundleのクラス概要(APIドキュメント)から:
The baseclass must be fully qualified (for example, myPackage.MyResources, not just MyResources). It must also be accessable by your code; it cannot be a class that is private to the package where ResourceBundle.getBundle is called.


今手元にあるのが英語しかないのでごめんなさい。これによるとリソースファイルはパッケージに含まれなければいけないのではないでしょうか?ディレクトリを指定する際にはクラスファイルを指定するように、"XXXX.YYY.resource"のようにしないといけないと思います。
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-03-13 01:23
H2 さんもおっしゃってますが、リソースってクラスパスから検索されますよね。
これは、クラスファイルの検索に使うのと同じ機構を使ってるみたいです。

ので、CLASSES/jp/co/atmarkit/Example.class を示すのに jp.co.atmarkit.Example を
指定するのと同じように、java.resource.もげもげ とすべきです。
katsum
大ベテラン
会議室デビュー日: 2002/02/27
投稿数: 119
お住まい・勤務地: 東京都
投稿日時: 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

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