首页 文章

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

提问于
浏览
3

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

类路径资源[com / mir00r / beans.xml]中的XML文档中的第24行无效;嵌套异常是org.xml.sax.SAXParseException; lineNumber:24; columnNumber:9; cvc-complex-type.2.3:元素'beans'不能有字符[children],因为类型的内容类型只是元素 . 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; lineNumber:24; columnNumber:9; cvc-complex-type.2.3:元素'beans'不能有字符[children],因为类型的内容类型只是元素 . 位于org.springframework.beans.factory的org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396)org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)org.springframework.beans.factory位于org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader)的org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)中的.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) .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(AbstractXmlApplicati onContext.java:127)org.springframework.context上的org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130) .support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)位于org.springframework.context.support.ClassPathXmlApplicationContext的org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:451) . (ClassPathXmlApplicationContext.java:139)在com.mir00r.Main_Test.main(Main_Test.java:18)的org.springframework.context.support.ClassPathXmlApplicationContext . (ClassPathXmlApplicationContext.java:83)引起:org.xml.sax.SAXParseException; lineNumber:24; columnNumber:9; cvc-complex-type.2.3:元素'beans'不能有字符[children],因为类型的内容类型只是元素 . at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325)at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator $ XSIErrorReporter.reportError(XMLSchemaValidator . java:458)at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3237)at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator . elementLocallyValidComplexType(XMLSchemaValidator.java:3200)atcom.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.elementLocallyValidType(XMLSchemaValidator.java:3160)at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processElementContent(XMLSchemaValidator.java) :3062)at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleEndElement(XMLSchemaValidator.java:2140)at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.endElement (XMLSchemaValidator.java:859)com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver .next(XMLDocumentFragmentScannerImpl.java:2973)位于com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)的com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl .next(XMLNSDocumentScannerImpl.java:117)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentSc annerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)位于com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)的com.sun.org.apache.xerces.internal.parsers . XML11Configuration.parse(XML11Configuration.java:777)位于com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)的com.sun.org.apache.xerces.internal.parsers . DOMParser.parse(DOMParser.java:243)位于org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument的com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:347) DefaultDocumentLoader.java:75)at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)... 14更多C:\ Users \ razza_000 \ AppData \ Local \ NetBeans \ Cache \ 8.1 \ executor -snippets \ run.xml:53:Java返回:1 BUILD FAILED(总时间:28秒)

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

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);
    }
 }

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 + '}';
     }
 }

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();
          }
      }

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>

这是我的项目结构照片

enter image description here

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

这是我的错误图片

enter image description here

3 回答

  • 3

    A - 解释

    bean文件中的注释行无效 . 您正在使用错误的评论标记,而不是使用“ <!-- --> ", you are using " // ”,这会导致 parse errororg.xml.sax.SAXParseException ) .

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

    // Dependency Injection Example using Constructor
    

    以下评论行有效;

    <!-- Do the comments here, that's all -->
    

    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>
    
  • 0

    我认为应用程序上下文声明中的文件名应该是 com.mir00r/beans.xml 而不是 main.test 中的 com/mir00r/beans.xml .

  • 0

    在编译我的spring应用程序时遇到了相同的异常 org.xml.sax.SAXParseException ,我发现的是一个Comment元素,我在取消注释代码后忘记删除'-->' part . 所以,我能够注意到,在删除它后,我能够执行我的应用程序 .

相关问题