zoukankan      html  css  js  c++  java
  • Maven使用tomcat7-maven-plugin插件run时出现错误: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component

    错误如下:

    A child container failed during start
    java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext

    还有一种错误是:

    org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer

    可以尝试以下方法:

    1、可能引入的servlet版本太高了,比如3.1版本的与Tomcat7插件兼容,可以尝试降级3.0.1。可以参照官方表格进行引入:http://tomcat.apache.org/whichversion.html

    2、可能是web.xml的头部版本太高了,可以尝试修改成:****http://java.sun.com/xml/ns/javaee/" id="WebApp_ID" version="2.5"> ****或者2.4这样的。

    3、但是观察上面报错的原因,问题出现在:org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer,也就是servlet-api.jar包冲突了导致的。可以尝试排除commons-logging.jar包,因为commons-logging中引入了2.3的servlet-api.jar。

        <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>4.1.4.RELEASE</version>
                    <exclusions>
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

    但这种方式不一定有效。

    也就是围绕包冲突的线索去找一下,参考依赖书去查看是否有冲突的包导致的。

    4、尝试把scope加上provided,也就是作用域改成编译时使用,而打包不需要带上:

        <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
            </dependency>

    5、可以尝试一下把POM上的servlet-api删除,然后在Eclipse的Build Path中加入servlet-api,但这种治标不治本。

    6、尝试使用以下的servlet-api:

    <dependency>
                <groupId>org.apache.tomcat</groupId>
                <artifactId>tomcat-servlet-api</artifactId>
                <version>7.0.76</version>
                <scope>provided</scope>
    </dependency>

    7、经过测试,发觉同一份代码在Mac上正常使用,而在Windows上却出现这样的错误,两台电脑唯一不同的是JDK和Maven的版本,接下来尝试将Windows上的Maven升级到最新版本。意外竟然启动成功了

    由于使用的是Windows 10系统,可能JDK版本的问题导致的,先删除旧版的JDK和Maven以及Maven本地仓库,下载最新版本的JDK_1.8.0_131和Maven3.5。安装配置路径参考:http://www.cnblogs.com/EasonJim/p/6821717.html

  • 相关阅读:
    Delphi Excel 操作大全
    ThreadLocal类
    MyBatis实战总结
    MyBatis入门
    Mybatis逆向工程
    2020年全国高校计算机能力挑战赛初赛java组
    集合论基础
    命题与逻辑
    Redis技术概述
    UML图中6种箭头的含义
  • 原文地址:https://www.cnblogs.com/EasonJim/p/6917587.html
Copyright © 2011-2022 走看看