Spring Dependency Injection:FileNotFoundException

时间:2013-01-09 16:19:14

标签: java spring dependency-properties

enter image description here

我正在学习春季依赖注入。我有两种类型的代码。一个工作,一个不工作......但是,它们都适用于制作教程的人。

评论代码给出了以下错误。

    @SuppressWarnings("deprecation")
public static void main(String[] args) {

    //ApplicationContext factory = new ClassPathXmlApplicationContext("Beans.xml");

    //The code below works
    BeanFactory factory = new XmlBeanFactory(new FileSystemResource("Beans.xml"));
    HelloWorld obj = (HelloWorld) factory.getBean("helloworld");

    obj.getMessage();
}

Beans.xml

 <?xml version="1.0"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:jdbc="http://www.springframework.org/schema/jdbc"
       xsi:schemaLocation="
           http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
           http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd           
       ">


    <bean id="helloworld" class="com.vulab.hellow.HelloWorld">
        <property name="message" value="Hello World" />
    </bean>
</beans>

使用 ApplicationContext

时出现错误消息

线程“main”中的异常org.springframework.beans.factory.BeanDefinitionStoreException:IOException从类路径资源[Beans.xml]解析XML文档;嵌套异常是java.io.FileNotFoundException:无法打开类路径资源[Beans.xml],因为它不存在

2 个答案:

答案 0 :(得分:2)

要使XmlBeanFactory起作用,Beans.xml必须与调用类位于同一目录中。

一个简单的替代方法是确保Beans.xml位于类路径中。您可以将它们复制到src\resources,然后使用:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld) applicationContext.getBean("helloworld");

ClassPathXmlApplicationContext更方便,因为不需要指定绝对文件位置。

注意:从Spring 3.1开始,XmlBeanFactorydeprecated,这意味着如果从3.0更改,则应使用此类替代方法。

答案 1 :(得分:1)

对于ClassPathXmlApplicationContext,应用程序上下文XML文件需要在您的ClassPath中可用。

如果您使用的是标准Maven目录布局,则需要将Beans.xml文件放在src/main/resources中。

如果您从IDE运行(看起来您正在使用屏幕截图中的Eclipse,尽管您没有明确说明您的IDE),您将需要进入Properties-&gt; Java Build Path并添加{{ 1}}到构建路径。

祝你好运,希望这会有所帮助!