`

Tomcat启动报错,Spring配置Xml校验出错解决办法

阅读更多

公司项目部署到tomcat之后因为包冲突启动报错,一直需要手动删jar包,花点时间整理下pom文件

下面是报错:

严重: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/amc]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:158)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1107)
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1841)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@24cd59e9]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:158)
	at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4831)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4963)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
	... 10 more
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@1029bf49]
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:111)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:141)
	at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:701)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
	... 13 more
Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: invalid LOC header (bad signature)
	at org.apache.catalina.webresources.JarResourceSet.initInternal(JarResourceSet.java:139)
	at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
	... 16 more
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
	at java.util.zip.ZipFile.read(Native Method)
	at java.util.zip.ZipFile.access$1400(ZipFile.java:56)
	at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:679)
	at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:415)
	at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
	at sun.misc.IOUtils.readFully(IOUtils.java:65)
	at java.util.jar.JarFile.getBytes(JarFile.java:390)
	at java.util.jar.JarFile.getManifestFromReference(JarFile.java:180)
	at java.util.jar.JarFile.getManifest(JarFile.java:167)
	at org.apache.catalina.webresources.JarResourceSet.initInternal(JarResourceSet.java:137)
	... 17 more
八月 02, 2016 8:49:12 上午 org.apache.catalina.startup.HostConfig deployDirectory
严重: Error deploying web application directory D:\apache-tomcat-8.5.4\webapps\amc
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/amc]]
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:728)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1107)
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1841)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)

网上查不到一模一样的报错,但是发现个规律,类似这个样子的都是jar包冲突问题所致。

于是在MyEclipse10中查看maven的依赖



 这个选项卡中把重复依赖的exclude掉,重新编译就OK了

 

下面是一个小插曲:

解决了其中几个slf4j的依赖之后(因为之前一直是这个报错)重新编译部署,又报错

org.springframework.beans.factory.BeanDefinitionStoreException: Line 10 in XML document from file [D:\apache-tomcat-8.5.4\webapps\amc\WEB-INF\classes\spring\applicationContext-mongodb.xml] is invalid; nested exception is org.xml.sax.SAXParseException: Document root element "beans", must match DOCTYPE root "null".
org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 83; Document root element "beans", must match DOCTYPE root "null".
	at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
	at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
	at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.rootElementSpecified(Unknown Source)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)
	at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElementHook(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
	at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
	at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
	at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
	at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:222)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:173)
	at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:148)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:126)
	at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:142)
	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:126)
	at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
	at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:89)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:269)
	at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:134)
	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:184)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4716)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5178)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1107)
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1841)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)

 看了下大概意思,错误应该是发生在Spring配置XML校验的阶段,但是我的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:mongo="http://www.springframework.org/schema/data/mongo"
	xsi:schemaLocation="
          http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
          http://www.springframework.org/schema/data/mongo   
          http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd">
	<!-- 省略具体bean配置 -->
</beans>  

可以看出我的xml里面并没有配置<!DOCTYPE>标签,也就是说Spring的校验方式应该是xsd的(这个时候庆幸我读过Spring3.x相关代码),所以说我的配置是正确的,于是再回到maven jar包依赖上,仔细一看原来是xfire-all依赖出一个Spring1.x的包叫喊,exclude掉,ok...

这里网上有人说spring1.x是只支持dtd校验(这里我并没有验证过),所以这个错就显而易见了

 

记录防忘,造福后来者!

  • 大小: 72.7 KB
分享到:
评论

相关推荐

    Spring Boot+Mybatis Plus+Thymeleaf实现用户登录和校验用户名是否重复功能

    通过内置的Tomcat服务器和自动配置功能,Spring Boot可以快速启动并运行应用,无需过多的配置。 Mybatis Plus是Mybatis的增强工具,在Mybatis的基础上只做增强不做改变,为简化开发、提高效率而生。它提供了便捷的...

    spring依赖包,spring自行整合的市面上几乎和spring有关的jar包

    Spring作为一个全面的轻量级应用框架,其核心特性可以支持应用程序的配置和服务管理,同时也允许开发者选择使用Java或XML来配置其组件。在描述中提到的“spring自行整合的市面上几乎和spring有关的jar包”,意味着这...

    tomcat 权限验证

    1. ** Realm配置 **:在Tomcat的`server.xml`或`context.xml`中,可以定义各种Realm类型,如`MemoryRealm`(内存中的用户和角色)、`JDBCRealm`(基于数据库的验证)或`PropertyFileRealm`(使用properties文件)。...

    struts2+spring+hibernate配置

    接下来,配置Spring,创建spring-context.xml文件,声明bean及依赖关系。最后,配置Hibernate,包括hibernate.cfg.xml文件设置数据库连接,实体类的注解或hbm.xml映射文件,以及SessionFactory的创建。 在给定的...

    spring boot 实践学习案例,与其它组件整合

    - Spring Boot 基础知识,包括SpringBoot起步、配置详解、aop、filter、拦截器、监听、启动器、全局异常处理、外部Tomcat启动、HTTPS、监控 等。 - springboot-data - Spring Boot 数据库操作,包括SpringJDBC、...

    一个改进版的spring-mvc-showcase

    - `src/main/resources`: 存放配置文件,如Spring的`applicationContext.xml`或`dispatcher-servlet.xml`,以及可能的数据库连接配置、国际化资源文件等。 - `src/main/webapp`: 包含Web应用的静态资源和配置,如...

    Spring在web下启动流程学习笔记

    `prepareRefresh`方法负责设置启动时间、激活状态、初始化配置源和校验属性。然后,`obtainFreshBeanFactory`方法获取BeanFactory实例,并启动BeanFactory,加载bean配置信息。`refreshBeanFactory`方法是这个过程的...

    Spring.3.x企业应用开发实战(完整版).part2

    4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 不同配置方式比较 4.13 小结 第5章 Spring容器高级主题 5.1 Spring容器技术内幕 5.1.1 内部工作机制 5.1.2 BeanDefinition 5.1.3 InstantiationStrategy 5.1.4 ...

    Struts2+spring+ibatis三大框架整合实例

    Struts2通过配置文件(如struts.xml)来定义Action和结果页面的映射关系,以及拦截器的使用,提供了强大的拦截器机制用于实现日志、权限校验等功能。 其次,Spring框架是企业级应用的核心,它提供依赖注入(DI)和...

    spring4.3.9相关jar包

    spring-oxm.jar:Spring对于object/xml映射的支持,可以让JAVA与XML之间来回切换 spring-messaging.jar: spring-test.jar:对JUNIT等测试框架的简单封装 spring-tx.jar:为JDBC、Hibernate、JDO、JPA等提供的一致的...

    一步一步叫你搭建struct+hernate+spring开发框架

    5. **配置Spring**:创建Spring的配置文件,如applicationContext.xml,定义Bean并进行依赖注入。包括SessionFactory、DAO接口及其实现、Service接口及其实现等。 6. **实现业务逻辑**:在Service层编写业务处理...

    spring4.1核心包

    14. spring-oxm-4.1.1.RELEASE.jar Spring对于object/xml映射的支持,可以让JAVA与XML之间来回切换 15. spring-test-4.1.1.RELEASE.jar 支持Spring组建JUnit和TestNG的单元测试和集成测试。 16. spring-tx-4.1.1....

    SSH 框架 struts-2.3.34 spring4.3.12 hibernate5.0.12

    2. 创建Spring的配置文件,如`beans.xml`,定义Bean的依赖关系和事务管理。 3. 配置Hibernate的`hibernate.cfg.xml`文件,指定数据库连接信息和实体类映射。 4. 在Action类中注入Spring管理的Service,通过Service...

    spring mvc入门小例子

    6. **启动服务器**:将项目部署到Tomcat或其他Servlet容器,访问配置的URL,查看运行效果。 这个“springmvc2”项目可能包含这些文件和目录:`pom.xml`(Maven配置),`src/main/webapp/WEB-INF/web.xml`(Servlet...

    Spring的入门deom

    配置Spring MVC的DispatcherServlet,指定`web.xml`中的Servlet映射和Spring的配置文件位置。`DispatcherServlet`负责接收HTTP请求并分发到相应的控制器。 6. **运行和测试** 在项目构建完成后,可以使用Tomcat或...

    spring2.5.6.zip

    2. **注解驱动开发**:Spring 2.5.6引入了更多的注解,如@Controller、@Service、@Repository等,这些注解使得基于Java的配置成为可能,减少了对XML配置文件的依赖,提高了开发效率。 3. **AOP增强**:在2.5版本中...

    spring+hibernate整合jar包

    - 配置Spring的beans.xml,定义bean的实例化、依赖关系及事务管理策略。 - Hibernate的hibernate.cfg.xml,定义数据库连接信息、实体类扫描路径、缓存设置等。 - Spring MVC的servlet-context.xml,配置...

    Springboot整合cxf测试项目亲测可用

    5. 启动服务:运行Spring Boot应用,CXF服务将自动启动并监听配置的端口。 6. 测试服务:可以通过CXF提供的测试工具或者编写客户端代码来调用服务,验证其功能是否正常。 这个项目的意义在于,它提供了一个实际...

    Spring-mvc Srping-boot spring-jdbc

    Spring Boot通过“起步依赖”(Starter POMs)来自动配置项目所需的各种组件,如数据源、日志、安全等,大大减少了XML配置。同时,Spring Boot还提供了Actuator端点,用于监控和管理应用程序的健康状态和性能指标。 ...

Global site tag (gtag.js) - Google Analytics