プロが教えるわが家の防犯対策術!

Tomcat4.1でWEB-INF/classes/resource/a.propertiesというリソースファイルを
<a.class>.getResourceAsStream("/resource/a.properties");
と記述して読み込もうとしています。実際この記述でサーバ(Solaris)上ではうまく読み込めているのですが同じソースにもかかわらずローカルの開発環境(All-In-One EclipseのTomcat)ではうまくいきません。
eclipseのTomcatのクラスパス周りの設定だとは思っていますがどこを設定していいかわかりません。
WEB-INF/classes/配下は特に設定が必要ないのでは?とも思いますし・・。
ちなみにサーブレット・その他のクラスなどは問題なく動いてるようです。

初めての質問ですのでちょっとわかりにくいかも知れませんが
もしわかる方がいらっしゃればご回答よろしくお願いします。

A 回答 (3件)

Class#getResourceAsStreamの呼び出しのパスの先頭に"/"がついてる場合は、絶対パスになります。


classesから読み込みたいのであれば、"/"をはずしてみてください。


<a.class>.getResourceAsStream("resource/a.properties");

この回答への補足

回答ありがとうございました。
しかしはずして見ましたが駄目でした。
やはりクラスパスの問題でしょうか?
サーバと同じソースということを考えると違うのはやはりTomcatの設定ということになるんですが・・。
サーバを設定したのが自分ではないので相違点がうまく見つけられません・・・。

補足日時:2006/04/25 17:01
    • good
    • 0

a.classは、どこに配置してあるのでしょうか?


WEB-INF/classes配下にありますか?
ほかに、Tomcatのshared/libやcommon/libにないですか?
    • good
    • 0

ごめんなさい。



<a.class>.getClassLoader().getResourceAsStream("resource/a.properties");
でやってみてください。

その際、a.classはWEB-INF/classesにあるクラスを指定して下さい。
    • good
    • 0
この回答へのお礼

自己解決しました。
やはりWEB-INF/classesにクラスパスを設定するとうまくいきました。ただそうするとサーブレットクラスなどのパスも今まで設定しなくてもよかったのをservlet.jarなどを設定する必要がになりました。
サーバもこの設定をしてるようです。一般的なやり方かはよくわからないのですが・・。
ちなみにgetResourceAsStreamを使っているa.classは外部jarのライブラリにあるので変更できませんでした。
お騒がせしましたが参考になりました。ありがとうございます。

お礼日時:2006/04/26 11:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!