Jar中的Java类如何读取外部XML配置文件?

时间:2012-11-23 04:56:03

标签: java spring jar path

我有一个用于创建数据库连接池的公共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时,我工作。

2 个答案:

答案 0 :(得分:0)

试试这个

    String userDir = System.getProperty("user.dir");
    File file =  new File(userDir+"/lib/db2.xml");

答案 1 :(得分:0)

db2.xml应该在classpath中。告诉我们你是如何运行java应用程序的。如果您使用像eclipse这样的ide,请将lib目录添加到classpath(构建路径)。如果您使用的是普通的java命令,那么请使用以下命令在类路径中使用lib目录。

java -cp {path to lib directory},{what ever jars you have comma seperated} mainClass

默认情况下,java命令在类路径中不会有当前目录。