环境
Tomcat版本:7.0
maven中的servlet-api版本为3.1.0
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
<version>3.1.0</version>
</dependency>
报错内容
org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is java.lang.NoClassDefFoundError: javax/servlet/http/HttpSessionIdListener
解决思路
-
启用一直各种报错,之前是SpringBoot中默认引的fasterxml版本与本地版本冲突。所以仍以为是版本有冲突。
-
确认SpringBoot配置无误。
-
查看javax.servlet-api的jar包,有
HttpSessionIdListener
,反思是否是Tomcat容器的servlet-api不对。
查看Tomcat的lib里面的servlet-api.jar,不含有HttpSessionIdListener
类。 -
查询servlet-api版本与Tomcat的关系。
由上图看出,servlet-api 3.1版本必须要tomcat8及以上才能支持。
解决方法
升级Tomcat为8.5。
升级后不再报错。