2013-06-12 35 views
1

我通過相同的問題搜索,但不幸找不到解決方案。 我面臨着以下異常:Spring applicationContext.xml:「根元素之後的文檔中的標記必須是格式正確的」

Exception in thread "main" org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 32 in XML document from class path resource [applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 32; columnNumber: 2; The markup in the document following the root element must be well-formed. 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209) 
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180) 
    at 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.loadBeanDefinitions(AbstractXmlApplicationContext.java:93) 
    at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:131) 
    at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:530) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:444) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) 
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83) 
    at Main.main(Main.java:18) 
Caused by: org.xml.sax.SAXParseException; lineNumber: 32; columnNumber: 2; The markup in the document following the root element must be well-formed. 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198) 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368) 
    at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1388) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$TrailingMiscDriver.next(XMLDocumentScannerImpl.java:1382) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123) 
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:237) 
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:300) 
    at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388) 
    ... 14 more 

,這是我的applicationContext.xml:

<context:component-scan base-package="com.springHibernate" /> 
    <context:annotation-config /> 
    <bean id="DataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <property name="url" value="jdbc:mysql://localhost:3306/myapp" /> 
     <property name="username" value="root" /> 
     <property name="password" value="password" /> 
    </bean> 
    <!-- Beans Declaration --> 
    <bean id="User" class="com.mycompany.myapp.core.model.User"/> 
    <bean id="Institute" class="com.mycompany.myapp.core.model.Institute"/> 

    <!-- User Service Declaration --> 
    <bean id="UserBoImpl" class="com.mycompany.myapp.core.bo.impl.UserBoImpl"> 
     <property name="userDao" ref="UserDaoImpl" /> 
    </bean> 
    <bean id="InstituteBoImpl" class="com.mycompany.myapp.core.bo.impl.InstituteBoImpl"> 
     <property name="instituteDao" ref="InstituteDaoImpl" /> 
    </bean> 

    <!-- User DAO Declaration --> 
    <bean id="UserDaoImpl" class="com.mycompany.myapp.core.dao.impl.UserDaoImpl"> 
     <property name="sessionFactory" ref="SessionFactory" /> 
    </bean> 
    <bean id="InstituteDaoImpl" class="com.mycompany.myapp.core.dao.impl.InstituteDaoImpl"> 
     <property name="sessionFactory" ref="SessionFactory" /> 
    </bean> 

</beans>  
<bean id="SessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="DataSource" /> 
    <property name="annotatedClasses"> 
     <list> 
      <value>com.mycompany.myapp.core.model.User</value> 
      <value>com.mycompany.myapp.core.model.Institute</value> 
     </list> 
    </property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
     </props> 
    </property> 
</bean> 
<tx:annotation-driven transaction-manager="txManager" /> 
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="SessionFactory" /> 
</bean> 

我不知道異常的原因是什麼... 我感謝您的意見。

回答

3

關閉<beans>標記,然後添加更多的bean定義。移動關閉beans標籤,使其嵌套bean定義。另一個可以用XML配置文件刻錄你的相關事物是使用IDE中的格式化工具。切勿使用工具格式化XML配置,它可以向xml添加額外的空白,這會解釋爲中斷您的配置。

簡而言之你這樣做:

<beans> 
    <bean id="1"/> 
</beans> 
<bean id="2"/> 
<bean id="3"/> 

當它應該是這樣的:

<beans> 
    <bean id="1"/> 
    <bean id="2"/> 
    <bean id="3"/> 
</beans> 

完全配置變化在於

<?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:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 
    <context:component-scan base-package="com.springHibernate" /> 
    <context:annotation-config /> 
    <bean id="DataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <property name="url" value="jdbc:mysql://localhost:3306/mydb" /> 
     <property name="username" value="root" /> 
     <property name="password" value="password" /> 
    </bean> 
    <!-- Beans Declaration --> 
    <bean id="User" class="com.mycompany.myapp.core.model.User"/> 
    <bean id="Institute" class="com.mycompany.myapp.core.model.Institute"/> 

    <!-- User Service Declaration --> 
    <bean id="UserBoImpl" class="com.mycompany.myapp.core.bo.impl.UserBoImpl"> 
     <property name="userDao" ref="UserDaoImpl" /> 
    </bean> 
    <bean id="InstituteBoImpl" class="com.mycompany.myapp.core.bo.impl.InstituteBoImpl"> 
     <property name="instituteDao" ref="InstituteDaoImpl" /> 
    </bean> 

    <!-- User DAO Declaration --> 
    <bean id="UserDaoImpl" class="com.mycompany.myapp.core.dao.impl.UserDaoImpl"> 
     <property name="sessionFactory" ref="SessionFactory" /> 
    </bean> 
    <bean id="InstituteDaoImpl" class="com.mycompany.myapp.core.dao.impl.InstituteDaoImpl"> 
     <property name="sessionFactory" ref="SessionFactory" /> 
    </bean> 

<bean id="SessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="DataSource" /> 
    <property name="annotatedClasses"> 
     <list> 
      <value>com.mycompany.myapp.core.model.User</value> 
      <value>com.mycompany.myapp.core.model.Institute</value> 
     </list> 
    </property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
     </props> 
    </property> 
</bean> 
<tx:annotation-driven transaction-manager="txManager" /> 
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="SessionFactory" /> 
</bean> 
</beans> 
+0

OMG:d是...非常感謝;) –

+0

@DanteSparda很高興我能幫上忙。 –

相關問題