启动弹簧应用程序时出错

时间:2011-12-28 19:25:40

标签: java spring

我刚刚将应用程序部署到tomcat版本6.0.32,我从spring获得此错误。我不认为xml无效

  

PAS:2011-12-28 14:19:08,585 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] -   PAS:2011-12-28 14:19:08,592 ERROR [org.springframework.web.context.ContextLoader] -   org.springframework.beans.factory.BeanDefinitionStoreException:来自ServletContext资源[/WEB-INF/config/applicationContext.xml]的XML文档中的第15行无效;嵌套异常是org.xml.sax.SAXParseException:文档根元素" beans",必须匹配DOCTYPE root" null"。   org.xml.sax.SAXParseException:文档根元素" beans",必须匹配DOCTYPE root" null"。       at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)       at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)       at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)       at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)       at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.rootElementSpecified(XMLDTDValidator.java:1621)       at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.java:1900)       at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:764)       at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1363)       at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl $ ContentDriver.scanRootElementHook(XMLDocumentScannerImpl.java:1318)       at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl $ FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3104)       at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl $ PrologDriver.next(XMLDocumentScannerImpl.java:922)       at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)       at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)       在com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)       在com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)       在com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)       在com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)       at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)       at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:222)       在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:173)       在org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:148)       在org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:129)       在org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:145)       在org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:126)       在org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)       at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:89)       在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:262)       at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:139)       在org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:252)       在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:190)       在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)       在org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4205)       在org.apache.catalina.core.StandardContext.start(StandardContext.java:4704)       在org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)       在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)       在org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)       在org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943)       在org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778)       在org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504)       在org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315)       在org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)       在org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)       在org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)       在org.apache.catalina.core.StandardHost.start(StandardHost.java:840)       在org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)       在org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)       在org.apache.catalina.core.StandardService.start(StandardService.java:525)       在org.apache.catalina.core.StandardServer.start(StandardServer.java:754)       在org.apache.catalina.startup.Catalina.start(Catalina.java:595)       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)       在java.lang.reflect.Method.invoke(Method.java:597)       在org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)       在org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

XMl是:

xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-2.5.xsd
       http://www.springframework.org/schema/util
       http://www.springframework.org/schema/util/spring-util-2.5.xsd
       http://www.springframework.org/schema/security 
       http://www.springframework.org/schema/security/spring-security-2.5.xsd">

<context:property-placeholder  location="WEB-INF/passport.properties, WEB-INF/config/server.properties"/>
<util:properties id="props" location="WEB-INF/passport.properties" />

<context:component-scan base-package="util" />

<bean id="passportConfig" class="util.PassportBaseConfig"
    p:configLocation="WEB-INF/" autowire="no" factory-method="getInstance"
    init-method="init" p:userDAO-ref="passportUserDao" p:teamDAO-ref="passportTeamDao" 
    p:serverId="${serverId}">
    <constructor-arg ref="props" />

</bean>

4 个答案:

答案 0 :(得分:7)

来自此消息

org.xml.sax.SAXParseException: Document root element "beans", must match DOCTYPE root "null". 

在我看来,您的DTD不正确,并且版本不匹配。您正在DTD中使用新版本并提供较旧的jar。

答案 1 :(得分:1)

请勿在spring配置文件中使用DOC类型。

而是像这样启动你的spring配置文件:

<?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-3.0.xsd">

另外,请务必关闭配置文件末尾的beans标记。

</beans>

这是春季3.1参考

IOC Container Info的链接

答案 2 :(得分:0)

看一下这个例子:Creating a Spring Application

请注意您的XML与正确的applicationContext.xml之间的区别。您缺少对命名空间的所有引用。

答案 3 :(得分:0)

我遇到了这个错误:

  

线程中的异常&#34; main&#34;   org.springframework.beans.factory.BeanDefinitionStoreException:Line   ...来自类路径资源[applicationContext.xml]的XML文档   是无效的;嵌套异常是org.xml.sax.SAXParseException;   电话号码: ...; columnNumber:...;记录根元素&#34; beans&#34;,   必须匹配DOCTYPE root&#34; null&#34;。 org.xml.sax.SAXParseException;   文档根元素&#34; beans&#34;,必须匹配DOCTYPE root&#34; null&#34;。

我已经通过添加:

解决了这个问题
xmlns:context="http://www.springframework.org/schema/context"

在applicationContext.xml文件中&amp;添加正确版本的依赖项,就像在我的情况下,我已经使用3.2.3.RELEASE来获得spring-context-support依赖。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>**3.2.3.RELEASE**</version>
</dependency>