0

netbeans IDE を使用して、春にプレースホルダーの概念を実装しようとしています。jar ファイルを実行している人がプロパティ ファイルを編集できるように、jar がデプロイされるフォドラーにプロパティ ファイルを配置したいと考えています。

dist フォルダには、jar ファイル、ライブラリ フォルダ、およびデータソースに関連するエントリを含むプロパティ フィールドが含まれます。

ClassPathXmlApplicationContext を使用して構成ファイルを読み取り、アプリケーション コンテキストに読み込みます。私の構成ファイルには次のエントリがあります

<bean id="c12" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
        <value>database.properties</value>
    </property>
</bean>

しかし、次の例外が発生します

Caused by: java.io.FileNotFoundException: class path resource [database.properties] cannot be opened because it does not exist

*編集: * 問題はクラスパスにあることに気付きました。クラスパスは、IDE で実行する場合は src フォルダーであり、コマンドラインで jar を実行する場合は「jar ファイル」ですが、どちらの場合も jar と同じフォルダーにあるプロパティ ファイルがありません。ファイルを使用して絶対パスを指定する以外に、アプリケーションへのコンテキストで相対パスに対抗する他の方法はありますか

4

2 に答える 2

0

jar と一緒に database.properties ファイルを配置して有効にするには、プログラムの実行時に現在のディレクトリをクラスパスに含める必要があります。

次のディレクトリ構造を想定しています。

myfolder
 +- myprog.jar
 +- database.properties

次のコマンドを使用してプログラムを実行すると、コードは database.properties を取得できるはずです (現在のディレクトリとして myfolder を使用)。

java -cp . -jar myprog.jar
于 2013-07-24T07:12:15.037 に答える
0

エラーメッセージに記載されているように、何の兆候もなく、Spring はクラスパスからロードしようとします。あなたの場合、これはあなたのJARを意味します。

ファイル システム上のファイルからロードする場合は、file:プレフィックスを使用する必要があります。たとえば、Java アプリケーションの起動パスからロードするには、次のようにします。

file:database.properties

ただし、絶対パスを設定することをお勧めします。

file:/path/to/database.properties
于 2013-07-24T06:47:50.780 に答える