线程“main”org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException 中的异常

Abd*_*zak 3 java xml spring spring-mvc

最近在学习Spring框架。所以我正在尝试检查依赖注入在 spring 框架中是如何工作的。因此,我创建了一个新的 Java 项目并使用基于构造函数 XML 的配置来练习依赖注入代码。运行我的项目后,我收到此错误....

来自类路径资源 [com/mir00r/beans.xml] 的 XML 文档中的第 24 行无效;嵌套异常是 org.xml.sax.SAXParseException;行号:24;列数:9;cvc-complex-type.2.3:元素 'beans' 不能有字符 [children],因为该类型的内容类型是 element-only。

2016 年 7 月 9 日晚上 11:22:11 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh INFO:刷新 org.springframework.context.support.ClassPathXmlApplicationContext@7ee361ad:启动日期 [Sat Jul 09 23:22:11 BDT]; 2016 上下文层次结构的根 2016 年 7 月 9 日晚上 11:22:11 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO:从类路径资源加载 XML bean 定义 [com/mir00r/beans.xml] 线程“main”中的异常" org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:来自类路径资源 [com/mir00r/beans.xml] 的 XML 文档中的第 24 行无效;嵌套异常是 org.xml.sax.SAXParseException;行号:24;列数:9;cvc-complex-type.2.3: 元素 'beans' 不能有字符 [children],因为类型'

在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396) 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) 在 org.springfactorybean.beanDefinitions(XmlBeanDefinitionReader.java:334)。 .xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) 在 org.springframework.beans.factory.support. .java:209) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) 在 org.springframework.beans.factory.support。AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243) at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127) at org.springframework.context.support.AbstractXmlApplicationContext.loadtractBeanDefinitions()AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127) .springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130) 在 org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537) 在 org.springframework.context.support.AbtractApplicationContext(AbstractReshableApplicationContext.java:130) .java:451) 在 org.springframework.context.support.ClassPathXmlApplicationContext。(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.(ClassPathXmlApplicationContext.java:83) at com.mir00r.Main_Test.main(Main_Test.java:18)

引起:org.xml.sax.SAXParseException;行号:24;列数:9;cvc-complex-type.2.3:元素 'beans' 不能有字符 [children],因为该类型的内容类型是 element-only。在 com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198) 在 com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437) 在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)在 com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325) 在 com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter。

这是我的代码......

Employee.java 文件

 package com.mir00r;

 /**
  * 
  * @author Abdur Razzak <abdur.razzaq06@ail.com>
  */
 public class Employee {
     private int id;
     private String name;
     private Address address; // create object from Address class

     public Employee() {
     }

     public Employee(int id) {
         this.id = id;
     }

     public Employee(String name) {
         this.name = name;
     }

    public Employee(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public Employee(int id, String name, Address address) {
        this.id = id;
        this.name = name;
        this.address = address;
    }

    public void show () {
        System.out.println(id + " : " + name);
        System.out.println(address);
    }
 }
Run Code Online (Sandbox Code Playgroud)

Address.java 文件

   package com.mir00r;

  /**
  * 
  * @author Abdur Razzak <abdur.razzaq06@ail.com>
  */
 public class Address {
     private final String state;
     private final String city;
     private final String country;

     public Address(String state, String city, String country) {
         this.state = state;
         this.city = city;
         this.country = country;
     }

     @Override
     public String toString() {
         return "Address{" + "state=" + state + ", city=" + city + ",  country=" + country + '}';
     }
 }
Run Code Online (Sandbox Code Playgroud)

Main_Test.java 文件

     package com.mir00r;

     import org.springframework.context.ApplicationContext;
     import org.springframework.context.support.ClassPathXmlApplicationContext;

     /**
      * 
      * @author Abdur Razzak <abdur.razzaq06@ail.com>
      */
      public class Main_Test {
          public static void main(String[] args) {
               ApplicationContext ac = new ClassPathXmlApplicationContext("com/mir00r/beans.xml");
               Employee em = (Employee)ac.getBean("emp");
               em.show();
          }
      }
Run Code Online (Sandbox Code Playgroud)

beans.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"
   xmlns:p="http://www.springframework.org/schema/p"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

     <bean id="a1" class="com.mir00r.Address">
         <constructor-arg value="Badda"></constructor-arg>
         <constructor-arg value="Dhaka"></constructor-arg>
         <constructor-arg value="Bangladesh"></constructor-arg>
     </bean>

     // Dependency Injection Example using Constructor
     <bean id="emp" class="com.mir00r.Employee">
         <constructor-arg value="10" type="int" ></constructor-arg>
         <constructor-arg value="Abdur Razzak" ></constructor-arg>
         <constructor-arg>
             <ref bean="a1"></ref>
         </constructor-arg>
     </bean>
 </beans>  
Run Code Online (Sandbox Code Playgroud)

这是我的项目结构照片

在此处输入图片说明

我现在能做什么 ....????

这是我的错误图片

在此处输入图片说明

Lev*_*glu 5

A - 解释

bean 文件中的注释行无效。您使用了错误的注释标签,而不是使用“ <!-- -->” ,而是使用“ ”,//这会导致解析错误( org.xml.sax.SAXParseException)。

它是一个xml文件,下面的注释行无效;

// Dependency Injection Example using Constructor
Run Code Online (Sandbox Code Playgroud)

并且以下注释行有效;

<!-- Do the comments here, that's all -->
Run Code Online (Sandbox Code Playgroud)

B - 解决方案

使用bean.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"
   xmlns:p="http://www.springframework.org/schema/p"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <bean id="a1" class="com.mir00r.Address">
        <constructor-arg value="Badda"/>
        <constructor-arg value="Dhaka"/>
        <constructor-arg value="Bangladesh"/>
    </bean>

    <!-- // Dependency Injection Example using Constructor -->
    <bean id="emp" class="com.mir00r.Employee">
        <constructor-arg value="10" type="int" />
        <constructor-arg value="Abdur Razzak" />
        <constructor-arg>
            <ref bean="a1"/>
        </constructor-arg>
    </bean>
</beans>
Run Code Online (Sandbox Code Playgroud)