我正在尝试使用netbeans IDE在spring中实现占位符概念。 我希望属性文件位于我的jar将被部署的fodler中,以便运行jar文件的人可以编辑它。
dist文件夹包含jar文件,libraries文件夹和包含与数据源相关的条目的属性文件。
我正在使用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
*的 编辑: * 意识到isssue是classpath, classpath是在IDE中运行时的src文件夹和在命令行上运行jar时的“jar文件”,但在这两种情况下它都错过了与jar相同的文件夹中的属性文件。除了使用file指定绝对路径之外:还有其他方法可以在应用程序的上下文中使用相对路径进行计数
答案 0 :(得分:0)
正如错误消息中提到的,没有任何指示,Spring尝试从类路径加载if。在您的情况下,这意味着在您的JAR中。
如果要从文件系统上的文件加载它,则必须使用file:
前缀。例如,从Java应用程序启动路径加载它:
file:database.properties
但我建议设置绝对路径:
file:/path/to/database.properties
答案 1 :(得分:0)
要让一个放在jar旁边的database.properties文件生效,你必须在运行程序时将当前目录包含在classpath中
假设以下目录结构:
myfolder
+- myprog.jar
+- database.properties
如果使用以下命令运行程序(myfolder作为当前目录),您的代码应该能够获取database.properties
java -cp . -jar myprog.jar