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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM