2016-08-01 23 views
0

Spring PropertyPlaceholderConfigurer beanとそれに関連するクラスパスに関連する質問を見てきましたが、これまでのところ私の問題を解決できませんでした。私はmyAppという古いプログラムにいくつかの変更を加えています。これはJarとして動作し、myApp.properties' file, which lives in a directory called 'config' within my application directory. In theという外部プロパティファイルを持っています。 'myApp'のapplicationContext.xmlファイルです。この外部プロパティファイルを読み込むようにBeanが定義されています。Spring PropertyPlaceholderConfigurer beanのクラスパスを設定する

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
<property name="locations"> 
    <list> 
    <value>classpath:myApp.properties</value> 
    </list> 
</property> 

このアプリケーションでは、内蔵されたときだけで正常に動作し、私のビルドと実行のためのすべてのJARの依存関係と一緒にconfigフォルダが含まれているため、Netbeansの内で実行されます。私はjava -jar myApp.jarを使用して、コマンドラインからそれを実行しようとする。しかし、私は次のエラーを取得する:

08/01/2016 15:37:18.562 | ERROR | Unable to start the application. | org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [myApp.properties] cannot be opened because it does not exist 

私は春がどこのプロパティファイルを見つけるために知っているが、私ように私が正しくクラスパスを指定する必要があることをもらいます「

答えて

0

最終的にどのような私のために働いた:

java -cp "myApp.jar;lib/*;config" com.myCompany.myApp.Main 

(はい、main()メソッドのクラスは、Mainとも呼ばれます。いいえ、私はこのプログラムを書いていません:))

私のクラスパスは、メインクラスを含むJARを指定します。このアプリケーションを実行するために必要な他のすべてのJARを含むディレクトリlib( '*'文字を使用すると、そのディレクトリにあるすべてのJARの名前を書き出す)と、さまざまな設定ファイルを含む 'config'ディレクトリ。また、私はmyApp.propertiesをproperty-configurerの定義に何も指定せずに指定できるとわかりました。私はこのファイルを問題なく 'myApp.jar'と同じディレクトリに置くことができました。

-1

てみてください、

のjava -classpath ...ので、任意のポインタをいただければ幸いです、そうする方法を正確に分からない ";。\ CONFIG *" -jar myApp.jar

+0

「config」の後の「*」は何を指定しますか?私はそれがワイルドカードのキャラクターだと思いますか? –

+0

実際には、-classpathオプションと-jarオプションの両方を使用すると、指定されたクラスパスがJARに含まれるmanifest.mfファイル内のものを優先して無視されるため、うまくいきません。だから私がしなければならなかったのは、-classpathを使ってJARの代わりに明示的にメインクラスを指定することでした。 –

+0

また、私は今週の私の研究で、 '*'はJARファイル(と多分クラスファイルあまりにも、IIRC)、それを使用すると、プログラムは私のプロパティファイルをとにかく配置できませんでした... –

関連する問題