弹出时读取配置文件时出现Filenotfoundexception

时间:2013-07-24 06:28:09

标签: spring spring-jdbc

我正在尝试使用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指定绝对路径之外:还有其他方法可以在应用程序的上下文中使用相对路径进行计数

2 个答案:

答案 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