• ベストアンサー

Tomcatプロジェクトの.propertiesファイルの置き場

当方、Tomcat5.0,Eclipseでサーブレットを開発しております。 初歩的な質問で申し訳ありませんが、プロパティファイルの置き場所が 分からず難儀しております。 どなたかご教示願います。 prop.load(new FileInputStream("C:/work/workspace/worktools/mail.properties")); 上記の様にフルパスを指定すると認識するのですが、 prop.load(new FileInputStream("mail.properties")); この様にパスを省略するとFileNotFoundExceptionが発生してしまいます。WEB-INF直下にファイルを置いてるのですが、間違いなのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#30536
noname#30536
回答No.3

FileInputStreamを相対パスで指定した場合は、JVMの起動ディレクトリがルートになります。 記憶があいまいですが、Eclipseから起動した場合は、workspaceがルートとなるじゃなかったでしょうか。 Tomcatのコンソールから起動した場合は、TOMCAT_HOMTがルートとなります。 通常はそういうことはしないので、クラスパスを通すか、WEB-INF/classeに配置し、ClassLoader#getResourceAsStreamを使います。

kagemarurx
質問者

お礼

ご回答ありがとうございます。 参考にして、以下の様にコードを変更しましたら上手くいきました。 private String fileName = "mail.properties"; private InputStream properties = null; public MailUtil() { this.properties = this.getClass().getClassLoader().getResourceAsStream( this.fileName ); } ちょっと裏技っぽいですが、読めたので良しとします。 ありがとうございました。

その他の回答 (2)

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.2

サーブレットのコンテキストパスを取得し、 フルパスの形にしてあげなければ ファイルは読込めません。 prop.load(new FileInputStream(servlet.getServletConfig().getServletContext().getRealPath("/mail.properties"))); 面倒であったら、Bundleの使用をお勧めします。

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.1

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

kagemarurx
質問者

補足

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

関連するQ&A