到Apache Tomcat® - Which Version Do I Want?查看一下自己的tomcat版本对应的servletapi的版本,我自己本地的tomcat版本是apache-tomcat-9.0.52对应的servlet版本是4.x版本的
需要自己到pom.xml配置
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
同时在idea的项目结构的库看一下有没有旧的servlet-api存在
像我自己这里会显示
The called method's class, javax.servlet.ServletContext, is available from the following locations: jar:file:/D:/maven/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar!/javax/servlet/ServletContext.class jar:file:/D:/maven/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.63/tomcat-embed-core-9.0.63.jar!/javax/servlet/ServletContext.class jar:file:/D:/maven/repository/javax/servlet/javax.servlet-api/4.0.1/javax.servlet-api-4.0.1.jar!/javax/servlet/ServletContext.class The called method's class hierarchy was loaded from the following locations: javax.servlet.ServletContext: file:/D:/maven/repository/javax/servlet/servlet-api/2.3/servlet-api-2.3.jar
这里虽然我引入了servlet-api 4.0.1版本,但是maven还是调用在本地库2.3版本的,于是我在项目结构将servlet-api 2.3的依赖剔除后就可以了。