上下文不存在

时间:2013-06-11 20:37:07

标签: java spring

我对弹簧上下文有一个非常奇怪的问题。

public static void main(String[] args) {


    File file = new File("/home/user/IdeaProjects/Refactor/src/spring-cfg.xml");
    System.out.println("Exist "+file.exists());
    System.out.println("Path "+file.getAbsoluteFile());

    ApplicationContext context = new ClassPathXmlApplicationContext(file.getAbsolutePath());

在控制台上显示:

Exist true
Path /home/user/IdeaProjects/Refactor/src/spring-cfg.xml

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [home/user/IdeaProjects/Refactor/src/spring-cfg.xml]; nested exception is java.io.FileNotFoundException: class path resource [home/user/IdeaProjects/Refactor/src/spring-cfg.xml] cannot be opened because it does not exist

4 个答案:

答案 0 :(得分:3)

您正在尝试加载它,好像/home/user/IdeaProjects/Refactor/src/spring-cfg.xml是类路径上的资源 - 它不是,它只是一个常规文件。请尝试使用FileSystemXmlApplicationContext代替...或指定真正的类路径资源,例如:假设您的spring-cfg.xml目录位于类路径中,只需src

答案 1 :(得分:2)

这不是很奇怪。您正尝试从不存在的文件中读取上下文。

ClassPathXmlApplicationContext,对于它的名称,不使用路径作为绝对路径,但它在类路径中寻找。你应该使用

ApplicationContext context = new ClassPathXmlApplicationContext("/spring-cfg.xml");

注意:这将不是从src读取文件,而是从编译的类(在编译时应该将其复制到的位置)读取文件。

答案 2 :(得分:0)

来自异常的消息是正确的,/home/user/IdeaProjects/Refactor/src/spring-cfg.xml不是类路径资源(看起来像是来自计算机的常规路径)。

我建议使用:ClassPathXmlApplicationContext("classpath:spring-cfg.xml"),因为你的配置xml看起来像是在你的源文件夹中。

答案 3 :(得分:0)

我认为此代码可以正常使用

ApplicationContext context = 
    new FileSystemXmlApplicationContext("file:/home/user/IdeaProjects/Refactor/src/spring-cfg.xml");

您可以在http://static.springsource.org/spring/docs/2.5.6/reference/resources.html

找到一些有用的信息