Cannot cast SpringServletContainerInitializer to javax.servlet.ServletContainerInitializer

一个项目中,使用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

相关文章
相关标签/搜索