设置Spring PropertyPlaceholderConfigurer bean的类路径

时间:2016-08-01 20:44:22

标签: java spring netbeans properties classpath

我一直在查看与Spring PropertyPlaceholderConfigurer bean及相关类路径相关的问题,但到目前为止还无法解决我的问题。我正在对名为myApp的旧程序进行一些更改,该程序作为Jar运行,并且有一个名为myApp.properties' file, which lives in a directory called 'config' within my application directory. In the applicationContext.xml'的外部属性文件。 'myApp'的文件我有一个bean定义为读取此外部属性文件:

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

这个应用程序在Netbeans中构建和运行时工作得很好,因为我包含config文件夹以及构建和运行的所有JAR依赖项。但是当我尝试使用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

我知道我需要正确指定类路径,以便Spring知道在哪里找到属性文件,但我不确定该怎么做,所以任何指针都会被赞赏......

2 个答案:

答案 0 :(得分:0)

最终对我有用的是:

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

(是的,带有main()方法的类也称为Main。不,我没有写这个程序:))

我的classpath指定包含主类的JAR,目录lib包含运行此应用程序所需的所有其他JAR(使用'*'字符以避免必须写出每个JAR的名称该目录)和包含各种配置文件的'config'目录。我还发现我可以在属性配置器定义中指定myApp.properties而没有任何限定符,这样我就可以将该文件保存在与“myApp.jar”相同的目录中而不会出现问题。

答案 1 :(得分:-1)

尝试,

java -classpath“.; \ config *” - jar myApp.jar