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

简介: 搭建SSM架构的时候,有时启动的时候会抛出以上的异常,这个异常一般都是web.xml文件的内容有错,或者pom.xml有问题(jar包冲突),而且后者的可能性会大一点。 下面是这个异常的全部内容:严重: A child container failed during startjava.

搭建SSM架构的时候,有时启动的时候会抛出以上的异常,这个异常一般都是web.xml文件的内容有错,或者pom.xml有问题(jar包冲突),而且后者的可能性会大一点。
下面是这个异常的全部内容:

严重: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
    at java.util.concurrent.FutureTask.report(Unknown Source)
    at java.util.concurrent.FutureTask.get(Unknown Source)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    ... 6 more
Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer
    at org.apache.catalina.startup.ContextConfig.getServletContainerInitializer(ContextConfig.java:1661)
    at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1569)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1277)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:369)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5179)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 6 more

根据org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer我们可以发现可能和javax的jar包有关。检查pom文件,发现确实引入了相关的jar包,推断可能和tomcat的内置的相关jar包冲突了,解决方案很简单,我们只需要在引入jar包的时候,添加:

<scope>provided</scope>

让tomcat容器使用这个jar包,而不要使用自己lib里的该jar包。
scope一共有5个值,它们的作用如下:

* compile,缺省值,适用于所有阶段,会随着项目一起发布。 
* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。 
* runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 
* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。 
* system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
目录
相关文章
|
4月前
|
Java 数据库连接 容器
8:Servlet生命周期-Java Web
8:Servlet生命周期-Java Web
28 0
|
4月前
|
缓存 安全 Java
7:Servlet表单-Java Web
7:Servlet表单-Java Web
34 0
|
4月前
|
Java 中间件 应用服务中间件
Servlet容器与Web容器详解
Servlet容器与Web容器详解
125 0
|
4月前
|
前端开发 JavaScript Java
Web.xml - Servlet与Filter的url-pattern
Web.xml - Servlet与Filter的url-pattern
56 8
|
5月前
|
前端开发 Java
[Web程序设计]实验: Servlet基础应用
[Web程序设计]实验: Servlet基础应用
|
6月前
|
前端开发 Java 应用服务中间件
异步编程 - 10 Web Servlet的异步非阻塞处理
异步编程 - 10 Web Servlet的异步非阻塞处理
32 0
|
1月前
Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml]【解决方案】
Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml]【解决方案】
16 0
|
2天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
1月前
|
Java 数据处理 数据库
Java Web开发中的Servlet
Java Web开发中的Servlet
|
2月前
|
Java 应用服务中间件 API
深入解析Java Servlet技术在Web开发中的应用
深入解析Java Servlet技术在Web开发中的应用
213 1