1

Eclipse で動的 Web プロジェクトを作成しました。構成ファイルを読み取る必要がある次の Java ステートメントがあります。

 Document doc= new SAXReader().read(new File(ConstantsUtil.realPath+"appContext.xml"));

基本的に、ConstantsUtil.realPath は空の文字列を返します。

「src」フォルダーと「WEB-INF」フォルダーの両方に「appContext.xml」を入れてみました。ただし、常に次のエラーが発生します。

 org.dom4j.DocumentException: appContext.xml (The system cannot find the file specified)

私は本当に混乱しています: Eclipse では、config xml ファイルを置く正しい場所はどこですか?

前もって感謝します。

4

4 に答える 4

2

Your concrete problem is caused by using new File() with a relative path in an environment where you have totally no control over the current working directory of the local disk file system. So, forget it. You need to obtain it by alternate means:

  1. Straight from the classpath (the src folder, there where your Java classes also are) using ClassLoader#getResourceAsStream():

    Document doc= new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream("appContext.xml"));
    
  2. Straight from the public webcontent (the WebContent folder, there where /WEB-INF folder resides) using ServletContext#getResourceAsStream():

    Document doc= new SAXReader().read(servletContext.getResourceAsStream("/WEB-INF/appContext.xml"));
    

    The ServletContext is in servlets available by the inherited getServletContext() method.

See also:

于 2013-01-14T14:10:37.020 に答える
0

設定ファイルをjar/warファイルに埋め込むことができます

InputStream is = MyClass.class.getResourceAsStream("/com/site/config/config.xml");
于 2013-01-14T08:38:32.407 に答える
0

すべての構成を含むフォルダーを作成し、サーバーで公開するときに Web アプリケーションのクラスパスで参照するか、それらを WebContent フォルダーの下に配置することができます。どちらの場合も、それらを相対的に参照する必要があります。

于 2013-01-14T08:51:42.033 に答える
0

プロパティ ファイルを配置できる場所は複数ある場合があります。場所の選択は、プロジェクトのアーキテクチャによって異なります。一般的に使用される場所は次のとおりです。

  • /YourProjectRootFolder/src/main/webapp/WEB-INF/properties/XYZ.properties : Java クラス ファイルと同じフォルダー内。
  • YourProjectConfFolderNAme/src/main/resources/XYZ.properties : ここでは、すべてのプロパティ ファイルがプロジェクト クラス ファイルとは別の場所に保持されます。

すべてのプロパティ ファイルをサーバーの conf フォルダーに移動する必要があるため、どちらも同じです。

于 2013-01-14T13:32:54.257 に答える