0

我正在尝试使用 netbeans IDE 在春季实现占位符概念。我希望属性文件位于将部署我的 jar 的文件夹中,以便运行 jar 文件的人可以编辑它。

dist 文件夹包含 jar 文件、库文件夹和包含与数据源相关的条目的属性字段。

我正在使用 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

*编辑: * 意识到问题出在类路径上,在 IDE 中运行时类路径是 src 文件夹,在命令行上运行 jar 时是“jar 文件”,但在这两种情况下,它都会错过与 jar 位于同一文件夹中的属性文件。除了使用文件指定绝对路径之外:还有其他方法可以在应用程序的上下文中对抗相对路径吗

4

2 回答 2

0

要使 jar 旁边的 database.properties 文件生效,您必须在运行程序时将当前目录包含到类路径中

假设以下目录结构:

myfolder
 +- myprog.jar
 +- database.properties

如果程序使用以下命令运行(以 myfolder 作为当前目录),您的代码应该能够获取 database.properties

java -cp . -jar myprog.jar
于 2013-07-24T07:12:15.037 回答
0

正如错误消息中提到的,没有任何指示,Spring 会尝试从您的类路径加载。在您的情况下,这意味着在您的 JAR 中。

如果要从文件系统上的文件加载它,则必须使用file:前缀。例如从 Java 应用程序启动路径加载它:

file:database.properties

但我建议设置一个绝对路径:

file:/path/to/database.properties
于 2013-07-24T06:47:50.780 回答