我一直在查看与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知道在哪里找到属性文件,但我不确定该怎么做,所以任何指针都会被赞赏......
答案 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