Java Spring依赖注入:FileNotFound异常

Java Spring依赖注入:FileNotFound异常,java,spring,dependency-properties,Java,Spring,Dependency Properties,我正在学习spring依赖注入。我有两种类型的代码。一个工作,一个不工作。。。但是,它们都为制作教程的人工作 注释代码给出了如下所示的错误 @SuppressWarnings("deprecation") public static void main(String[] args) { //ApplicationContext factory = new ClassPathXmlApplicationContext("Beans.xml"); //The code b

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

注释代码给出了如下所示的错误

    @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:class path resource[Beans.xml]无法打开,因为它不存在

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

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

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Beans.xml");
HelloWorld obj = (HelloWorld) applicationContext.getBean("helloworld");
ClassPathXmlApplicationContext
更方便,因为不需要指定绝对文件位置


注意:从Spring 3.1开始,XmlBeanFactory是一个新版本,这意味着如果您从3.0更改,应该使用类似的替代版本。

对于
类路径XmlApplicationContext
,应用程序上下文XML文件需要在类路径中可用

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

如果您是从IDE运行的(从屏幕截图上看,您似乎在使用Eclipse,尽管您没有明确说明您的IDE),那么您需要进入Properties->Java构建路径,并将
src/main/resources
添加到构建路径中


祝你好运,希望这有帮助

文件Beans.xml还是文件Beans.xml?检查案例?在IDE中也是一样的@你把Beans.xml文件放在哪里了?它是否在一个源文件夹中(当你编译你的应用程序时,它是否会被复制到你的类文件夹)?@ClaudioFernandez我如何确保这一点?我打开了我的classes文件夹..没有看到任何名为Beans.xml的内容将您的Beans.xml放入调用它的类的同一目录中。如果你使用maven,你可以把它放在资源文件夹中。这很有效!!非常感谢。只是好奇拥有这两种代码有什么意义?它们是不同的读取器,
XmlBeanFactory
默认情况下不从类路径读取。