一個項目中,使用Tomcat7 啓動報錯了:java
重: Failed to detect ServletContainerInitializers for context with name [/rpd-bi] java.io.IOException: java.lang.ClassCastException: Cannot cast org.springframework.web.SpringServletContainerInitializer to javax.servlet.ServletContainerInitializer at org.apache.catalina.startup.WebappServiceLoader.loadServices(WebappServiceLoader.java:206) at org.apache.catalina.startup.WebappServiceLoader.load(WebappServiceLoader.java:158) at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1579) at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1280) at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:888) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:388) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5522) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.ClassCastException: Cannot cast org.springframework.web.SpringServletContainerInitializer to javax.servlet.ServletContainerInitializer at java.lang.Class.cast(Class.java:3369) at org.apache.catalina.startup.WebappServiceLoader.loadServices(WebappServiceLoader.java:198) ... 15 more
可是若是換成 Tomcat8.5就沒有問題.web
百度的話,通常都說是 相關 servlet jar 包衝突.spring
查看了一下maven 依賴確實有 servlet-api , 若是使用 Tomcat 啓動項目的話,通常Tomcat 裏面都自帶了 servlet-api 的。apache
排除一下。api
<dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-tools</artifactId> <version>2.0</version> <exclusions> <exclusion> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </exclusion> </exclusions> </dependency> 再次重啓以後,仍是報錯了 再次 修改 <!-- servlet-api --> <dependency> <groupId>org.glassfish</groupId> <artifactId>javax.servlet</artifactId> <version>3.1.1</version> <scope>provided</scope> </dependency> 必定要加上 provided , 同時還不能去掉。去掉仍是會報錯的。
參考 https://blog.csdn.net/imjcoder/article/details/79250992app
參考 https://blog.csdn.net/u013704227/article/details/46460913maven