重複の可能性:
クラスパスでファイルを見つける際の問題
lib フォルダー内の外部 jar ファイルが実行時に構成ファイルを読み取る必要がある場合、xml ファイルなどの構成ファイルを Java 動的 Web プロジェクトのどこに配置する必要がありますか。
重複の可能性:
クラスパスでファイルを見つける際の問題
lib フォルダー内の外部 jar ファイルが実行時に構成ファイルを読み取る必要がある場合、xml ファイルなどの構成ファイルを Java 動的 Web プロジェクトのどこに配置する必要がありますか。
つまり、これらのファイルはアプリケーションのクラスパスに到達する必要があります。Webの場合、probjectWEB-INF/classes
が最適な場所です。(@Easwaramoorthy Kanagaがすでに述べたように)。
問題は、ファイルをプロジェクトのどこに配置するかです。Mavenを使用している場合は、ほとんど場所が決まりますsrc/main/resources
。Mavenを使用していない場合は、とにかくそれらをリソースディレクトリに配置します。リソースディレクトリは、ディレクトリと同じレベルで定義する必要がありますsrc
。たとえばsrc
、プロジェクトルートの下にディレクトリがある場合resources
、同じ場所にディレクトリを作成します。これらのファイルをターゲットディレクトリにコピーするようにIDEを設定します。同じことを行うようにビルドスクリプトを更新します。
WEB-INF/classes フォルダーに配置できます。クラスフォルダー内にフォルダーを配置しても、完全に機能します。
もう1つ、jarファイルはハードコードされたパスで構成ファイルを読み取る必要があり、代わりに次のようにする必要があります。
String xmlFilePath = "configfile.xml";
InputStream file = this.getClass().getClassLoader().getResourceAsStream(xmlFilePath);