- ベストアンサー
Tomcatプロジェクトの.propertiesファイルの置き場
当方、Tomcat5.0,Eclipseでサーブレットを開発しております。 初歩的な質問で申し訳ありませんが、プロパティファイルの置き場所が 分からず難儀しております。 どなたかご教示願います。 prop.load(new FileInputStream("C:/work/workspace/worktools/mail.properties")); 上記の様にフルパスを指定すると認識するのですが、 prop.load(new FileInputStream("mail.properties")); この様にパスを省略するとFileNotFoundExceptionが発生してしまいます。WEB-INF直下にファイルを置いてるのですが、間違いなのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
FileInputStreamを相対パスで指定した場合は、JVMの起動ディレクトリがルートになります。 記憶があいまいですが、Eclipseから起動した場合は、workspaceがルートとなるじゃなかったでしょうか。 Tomcatのコンソールから起動した場合は、TOMCAT_HOMTがルートとなります。 通常はそういうことはしないので、クラスパスを通すか、WEB-INF/classeに配置し、ClassLoader#getResourceAsStreamを使います。
その他の回答 (2)
- kakusuke
- ベストアンサー率36% (95/259)
サーブレットのコンテキストパスを取得し、 フルパスの形にしてあげなければ ファイルは読込めません。 prop.load(new FileInputStream(servlet.getServletConfig().getServletContext().getRealPath("/mail.properties"))); 面倒であったら、Bundleの使用をお勧めします。
- PED02744
- ベストアンサー率40% (157/390)
classes\resources の下だと思われます。 Eclipseで開発していて、tomcatと連携してデバッグしているのなら、 src\resources の下に配置しておくと、 classes\resources の下に自動的に配置されることになるとおもいます。
補足
ご回答ありがとうございます。 早速試したところ、やはり認識されませんでした。 java\resoucesと言うフォルダがあったのでそこに配置してみましたが、やはり認識されませんでした。 一体どう言う事なんでしょうか? クラスパスの設定が間違っているのでしょうか? 悩んでいます。
お礼
ご回答ありがとうございます。 参考にして、以下の様にコードを変更しましたら上手くいきました。 private String fileName = "mail.properties"; private InputStream properties = null; public MailUtil() { this.properties = this.getClass().getClassLoader().getResourceAsStream( this.fileName ); } ちょっと裏技っぽいですが、読めたので良しとします。 ありがとうございました。