公司项目部署到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校验(这里我并没有验证过),所以这个错就显而易见了
记录防忘,造福后来者!
相关推荐
通过内置的Tomcat服务器和自动配置功能,Spring Boot可以快速启动并运行应用,无需过多的配置。 Mybatis Plus是Mybatis的增强工具,在Mybatis的基础上只做增强不做改变,为简化开发、提高效率而生。它提供了便捷的...
Spring作为一个全面的轻量级应用框架,其核心特性可以支持应用程序的配置和服务管理,同时也允许开发者选择使用Java或XML来配置其组件。在描述中提到的“spring自行整合的市面上几乎和spring有关的jar包”,意味着这...
1. ** Realm配置 **:在Tomcat的`server.xml`或`context.xml`中,可以定义各种Realm类型,如`MemoryRealm`(内存中的用户和角色)、`JDBCRealm`(基于数据库的验证)或`PropertyFileRealm`(使用properties文件)。...
接下来,配置Spring,创建spring-context.xml文件,声明bean及依赖关系。最后,配置Hibernate,包括hibernate.cfg.xml文件设置数据库连接,实体类的注解或hbm.xml映射文件,以及SessionFactory的创建。 在给定的...
- Spring Boot 基础知识,包括SpringBoot起步、配置详解、aop、filter、拦截器、监听、启动器、全局异常处理、外部Tomcat启动、HTTPS、监控 等。 - springboot-data - Spring Boot 数据库操作,包括SpringJDBC、...
- `src/main/resources`: 存放配置文件,如Spring的`applicationContext.xml`或`dispatcher-servlet.xml`,以及可能的数据库连接配置、国际化资源文件等。 - `src/main/webapp`: 包含Web应用的静态资源和配置,如...
`prepareRefresh`方法负责设置启动时间、激活状态、初始化配置源和校验属性。然后,`obtainFreshBeanFactory`方法获取BeanFactory实例,并启动BeanFactory,加载bean配置信息。`refreshBeanFactory`方法是这个过程的...
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通过配置文件(如struts.xml)来定义Action和结果页面的映射关系,以及拦截器的使用,提供了强大的拦截器机制用于实现日志、权限校验等功能。 其次,Spring框架是企业级应用的核心,它提供依赖注入(DI)和...
spring-oxm.jar:Spring对于object/xml映射的支持,可以让JAVA与XML之间来回切换 spring-messaging.jar: spring-test.jar:对JUNIT等测试框架的简单封装 spring-tx.jar:为JDBC、Hibernate、JDO、JPA等提供的一致的...
5. **配置Spring**:创建Spring的配置文件,如applicationContext.xml,定义Bean并进行依赖注入。包括SessionFactory、DAO接口及其实现、Service接口及其实现等。 6. **实现业务逻辑**:在Service层编写业务处理...
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....
2. 创建Spring的配置文件,如`beans.xml`,定义Bean的依赖关系和事务管理。 3. 配置Hibernate的`hibernate.cfg.xml`文件,指定数据库连接信息和实体类映射。 4. 在Action类中注入Spring管理的Service,通过Service...
6. **启动服务器**:将项目部署到Tomcat或其他Servlet容器,访问配置的URL,查看运行效果。 这个“springmvc2”项目可能包含这些文件和目录:`pom.xml`(Maven配置),`src/main/webapp/WEB-INF/web.xml`(Servlet...
配置Spring MVC的DispatcherServlet,指定`web.xml`中的Servlet映射和Spring的配置文件位置。`DispatcherServlet`负责接收HTTP请求并分发到相应的控制器。 6. **运行和测试** 在项目构建完成后,可以使用Tomcat或...
2. **注解驱动开发**:Spring 2.5.6引入了更多的注解,如@Controller、@Service、@Repository等,这些注解使得基于Java的配置成为可能,减少了对XML配置文件的依赖,提高了开发效率。 3. **AOP增强**:在2.5版本中...
- 配置Spring的beans.xml,定义bean的实例化、依赖关系及事务管理策略。 - Hibernate的hibernate.cfg.xml,定义数据库连接信息、实体类扫描路径、缓存设置等。 - Spring MVC的servlet-context.xml,配置...
5. 启动服务:运行Spring Boot应用,CXF服务将自动启动并监听配置的端口。 6. 测试服务:可以通过CXF提供的测试工具或者编写客户端代码来调用服务,验证其功能是否正常。 这个项目的意义在于,它提供了一个实际...
Spring Boot通过“起步依赖”(Starter POMs)来自动配置项目所需的各种组件,如数据源、日志、安全等,大大减少了XML配置。同时,Spring Boot还提供了Actuator端点,用于监控和管理应用程序的健康状态和性能指标。 ...