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中查找它。
目录
相关文章
|
15天前
|
Java 数据库连接 容器
8:Servlet生命周期-Java Web
8:Servlet生命周期-Java Web
29 0
|
15天前
|
缓存 安全 Java
7:Servlet表单-Java Web
7:Servlet表单-Java Web
36 0
|
15天前
|
Java 中间件 应用服务中间件
Servlet容器与Web容器详解
Servlet容器与Web容器详解
136 0
|
5月前
|
前端开发 JavaScript Java
Web.xml - Servlet与Filter的url-pattern
Web.xml - Servlet与Filter的url-pattern
64 8
|
6月前
|
前端开发 Java
[Web程序设计]实验: Servlet基础应用
[Web程序设计]实验: Servlet基础应用
107 0
|
15天前
Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml]【解决方案】
Could not open ServletContext resource [/WEB-INF/springmvc-servlet.xml]【解决方案】
19 0
|
15天前
|
XML 存储 Java
11:Servlet中初始化参数的获取与应用-Java Web
11:Servlet中初始化参数的获取与应用-Java Web
30 3
|
15天前
|
前端开发 JavaScript Java
Java与Web开发的结合:JSP与Servlet
Java与Web开发的结合:JSP与Servlet
15 0
|
15天前
|
SQL Java 数据库连接
17:数据库连接池与Servlet整合-Java Web
17:数据库连接池与Servlet整合-Java Web
28 3
|
15天前
|
缓存 前端开发 Java
15:Servlet 3.0文件上传与下载-Java Web
15:Servlet 3.0文件上传与下载-Java Web
34 5