最近出现了将数据库设置外包给Spring applicationContext.xml的要求。因此,我们希望在构建的jar之外有一个jdbc.properties文件,因此用户可以轻松更改jdbc.settings。到目前为止,所有这些都在eclipse工作区中运行良好,但是只要我使用ant构建分发版,applicationContext.xml就不再找到jdbc.properties了。
applicationContext.xml如下所示:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:jdbc.properties</value>
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
在eclipse中我使用了以下类路径,因此jdbc.properties(放置在eclipse项目文件夹“config”中)将被找到:
classpath文件:
<classpath>
...
<classpathentry kind="src" path="config"/>
...
</classpath>
直到这里一切正常。现在我用Ant构建项目。创建了project.jar,并在其旁边有一个单独的配置文件夹以及其中的jdbc.properties文件。在Manifest.mf中有一个条目:
config/jdbc.properties
但是当我现在启动服务器时,找不到jdbc.properties。当我将Manifest.mf条目更改为:
时,我注意到了config/.
再次正常工作。但我不明白为什么这是不同的。谁能解释我这种行为?或者甚至可能知道我做错了什么?显然我必须以某种方式更改Ant文件,所以他只是在清单文件中添加了config文件夹,而不仅仅是jdbc.properties文件本身?
提前谢谢!
答案 0 :(得分:1)
类路径包含jar文件和包含类文件和其他资源的目录的位置。您应该在类路径中指定包含属性文件的目录的路径,而不是属性文件本身的路径。也就是说,您的清单条目应该是'config'。
答案 1 :(得分:0)
解决方案是在Ant-buildscript中定义一个classpathelement。
<classpath>
<pathelement location="${dir.build}/config/."/>
<classpath>
不幸的是,我仍然不知道,为什么直接引用该文件也没有解决这个问题。