org.springframework.beans.factory.BeanDefinitionStoreException,如何修复错误?

时间:2017-06-30 11:44:34

标签: spring spring-mvc dependency-injection

我目前正在学习Spring DI。

但由于某些错误,我无法运行该项目。

以下是错误列表。

线程中的异常" main"

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:344)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:252)
    at org.springframework.context.support.GenericXmlApplicationContext.load(GenericXmlApplicationContext.java:124)
    at org.springframework.context.support.GenericXmlApplicationContext.<init>(GenericXmlApplicationContext.java:69)
    at Spring_DI.MainClass.main(MainClass.java:15)
Caused by: java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:330)

以下是applicationContext.xml的内容。

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

<bean id="cats" class="Spring_DI.Cats" />
<!-- "Spring_DI.MyCats"클래스를 myCats라는 id를 지정해서 객체(bean)을 생성 -->
<bean id="myCats" class="Spring_DI.MyCats">
    <!-- Spring_DI.Cats.MyCats라는 클래스에 있는 필드들의 값을 설정해줌 -->
    <property name="cats"><!-- 첫번째 property(필드) -->
        <ref bean="cats"/><!-- 이 property는 위에서 생성한 bean(객체)인 cats를 참조한다. -->
    </property>
    <property name="firstCatName" value="순덕" /><!-- MyCats의 필드의 이름과 값을 설정 -->
    <property name="secondCatName" value="나비" />
    <property name="firstCatAge" value="1" />
    <property name="secondCatAhttps://stackoverflow.com/jobs?med=site-ui&ref=jobs-tabge" value="2" />
</bean>
</beans>

这是java文件的内容。

package Spring_DI;

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;

public class MainClass {

    public static void main(String[] args) {

         //bean을 설정한 xml파일이 있는 위치 지정
        String configLocation = "classpath:applicationContext.xml";

        //지정한 위치를 참고하여 설정파일을 얻어옴
        AbstractApplicationContext ctx = 
                new GenericXmlApplicationContext(configLocation);

        //설정파일에서 bean을 가져옴
        //getBean()를 이용해서 MyCats타입에서 myCats를 얻어와서 객체를 생성 
        // = 방법1 예제처럼 직접 생성이 아닌 외부에서 얻어옴(주입을 시켜줌)
        MyCats myCat = ctx.getBean("myCats",MyCats.class);

        //호출
        myCat.catsNameInfo();
        myCat.catsAgeInfo();
    }

}

以下是项目结构。 enter image description here

如何处理上述错误?

为什么会出现上述错误?

请告诉我如何解决问题。

1 个答案:

答案 0 :(得分:1)

根据屏幕截图,您的项目是maven项目。因此资源(除源文件之外的任何其他文件)应该放在src / main / resources中。当Maven构建你的项目时,它希望只找到src / main / java下的Java源文件,并忽略所有其他文件。 / p>