【发布时间】:2012-11-11 11:28:24
【问题描述】:
我有一个用于创建数据库连接池的通用 jar,其数据源 XML 配置为“db2.xml”,位于此 JAR 的同一路径下,例如:
Project/
-- lib
-- db2.xml
-- common.jar
按照读取db2.xml的代码:
private BeanFactory() {
try {
beanFactory = new DefaultListableBeanFactory();
xmlReader = new XmlBeanDefinitionReader((BeanDefinitionRegistry)
beanFactory);
resource = new ClassPathResource("db2.xml");
xmlReader.loadBeanDefinitions(resource);
} catch (Exception e) {
e.printStackTrace();
}
}
总是发生错误:
org.springframework.beans.factory.BeanDefinitionStoreException: IOException
parsing XML document from class path resource [db2.xml]; nested exception is
java.io.FileNotFoundException: class path resource [db2.xml] cannot be opened
because it does not exist
所以一定是找不到'db2.xml'造成的。配置文件是否设置resource = new ClassPathResource("/db2.xml")或resource = new ClassPathResource("lib/db2.xml")或resource = new ClassPathResource("../lib/db2.xml");这一切都不起作用。如何为此设置相对路径。
resource = new ClassPathResource(CONFIGURATION_PATH);
这是一个 Java 项目。当我将 db2.xml 放入公共 jar 时,我就可以工作了。
【问题讨论】:
-
在
lib目录中添加db2.xml没有意义,还是试试"classpath:lib/db2.xml" -
什么意思?使用“classpath:lib/db2.xml”替换“db2.xml”作为配置路径?
-
您不能将单个文件添加到类路径(罐子除外),您需要添加整个文件夹(如果您这样做,我不会使用“lib”,因为这会添加所有jar 文件两次)。
-
@BradyZhu :是的,尝试使用它。
-
Nandkumar Tekale:你的意思是我使用绝对路径作为配置路径吗? 'classpath:lib/db2.xml' = 类路径 + '/lib/db2.xml'?