アプリ版:「スタンプのみでお礼する」機能のリリースについて

当方、Tomcat5.0,Eclipseでサーブレットを開発しております。
初歩的な質問で申し訳ありませんが、プロパティファイルの置き場所が
分からず難儀しております。
どなたかご教示願います。

prop.load(new FileInputStream("C:/work/workspace/worktools/mail.properties"));

上記の様にフルパスを指定すると認識するのですが、

prop.load(new FileInputStream("mail.properties"));

この様にパスを省略するとFileNotFoundExceptionが発生してしまいます。WEB-INF直下にファイルを置いてるのですが、間違いなのでしょうか?

A 回答 (3件)

FileInputStreamを相対パスで指定した場合は、JVMの起動ディレクトリがルートになります。


記憶があいまいですが、Eclipseから起動した場合は、workspaceがルートとなるじゃなかったでしょうか。
Tomcatのコンソールから起動した場合は、TOMCAT_HOMTがルートとなります。
通常はそういうことはしないので、クラスパスを通すか、WEB-INF/classeに配置し、ClassLoader#getResourceAsStreamを使います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
参考にして、以下の様にコードを変更しましたら上手くいきました。

private String fileName = "mail.properties";
private InputStream properties = null;

public MailUtil() {
this.properties = this.getClass().getClassLoader().getResourceAsStream( this.fileName );
}

ちょっと裏技っぽいですが、読めたので良しとします。
ありがとうございました。

お礼日時:2007/02/05 10:12

サーブレットのコンテキストパスを取得し、


フルパスの形にしてあげなければ
ファイルは読込めません。

prop.load(new FileInputStream(servlet.getServletConfig().getServletContext().getRealPath("/mail.properties")));

面倒であったら、Bundleの使用をお勧めします。
    • good
    • 1

classes\resources の下だと思われます。


Eclipseで開発していて、tomcatと連携してデバッグしているのなら、
src\resources の下に配置しておくと、
classes\resources の下に自動的に配置されることになるとおもいます。

この回答への補足

ご回答ありがとうございます。
早速試したところ、やはり認識されませんでした。
java\resoucesと言うフォルダがあったのでそこに配置してみましたが、やはり認識されませんでした。
一体どう言う事なんでしょうか?
クラスパスの設定が間違っているのでしょうか?
悩んでいます。

補足日時:2007/02/02 18:53
    • good
    • 0

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