- PR -

【再質問】「ファイルの相対パス指定について」

投稿者投稿内容
JW
常連さん
会議室デビュー日: 2004/01/14
投稿数: 49
投稿日時: 2004-03-03 16:24
Properties なら list()やpropertyNames()、
ResourceBundle なら getKeys()でデータを列挙
してみることから始めてみたらどうでしょう。


以下、可能性だけの話ですが、

ResourceBundleはもちろん、Class#getResourceAsStream()
もクラスパスから検索できる範囲内にあるファイルを読むので
クラスパス上に有る別のファイルを読んでいる可能性が無いとは
いえません。

サーブレットコンテナを起動する際にやたらめったら変な
クラスパスを指定していたり、(コンテナ依存の)自動で
クラスパスに含めてくれるディレクトリに中身の無い
dbConnect.propertiesという名前のファイルを放り込んで
いたりとかすると、(同名だけど)内容の違うファイルを読んでて
わけ判らん状態になる場合もありえます。

またこのソースは見た感じパッケージはつけてないようですが、
パッケージ付だと getResourceAsStream()はパッケージに対して
相対的な場所を見に行くのでさらに違う場所だったりする可能性も
あります。
(package jp.co.xxxx.yyyy だと、
/WEB-INF/classes/jp/co/xxxx/yyyy/dbConnect.properties とか)
NOB
常連さん
会議室デビュー日: 2004/03/02
投稿数: 49
投稿日時: 2004-03-04 07:30
JWさんありがとうございます。木・金曜日は少し忙しいので土曜日テストして結果をご報告しますね。
NOB
常連さん
会議室デビュー日: 2004/03/02
投稿数: 49
投稿日時: 2004-03-06 14:24
解決しました。どうも別プロジェクトの「dbConnect.properties」を参照していたようです。

【今回悩んでいたプロジェクト】
E:\java_source\oracle_web\WEB-INF\classes\dbConnect.properties
【前に作ったプロジェクト】
E:\java_source\website\WEB-INF\classes\dbConnect.properties
--dbConnect.properties--
urlyonezawa=jdbc:postgresql://xxx.xxx.xxx.xxx:5432/yonezawa
jdbcDriver=org.postgresql.Driver


>サーブレットコンテナを起動する際にやたらめったら変な
>クラスパスを指定していたり、(コンテナ依存の)自動で
>クラスパスに含めてくれるディレクトリに中身の無い
>dbConnect.propertiesという名前のファイルを放り込んで
>いたりとかすると、(同名だけど)内容の違うファイルを読んでて
>わけ判らん状態になる場合もありえます。

やたらめったらクラスパスを指定している訳ではないのですが、結局はJMさんの回答が正解でした。NOB自身、まだまだ修行が足りませんね。

でもこのような事態を回避するために、気をつけるべきこと・こういう風にコーディングしたほうがいいよ等の有識者のアドバイスがあれば幸いです。簡単なコーディングではありますが、こういうサンプルは現場では良く使う技術のはずですので。今回相談にのってくれた皆さん、本当にありがとうございました。

[ メッセージ編集済み 編集者: NOB 編集日時 2004-03-06 14:26 ]

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