技术版本:
SpringBoot2.04
错误场景描述:
项目可以正常启动,但后台接口一被请求就报下面这个错误:
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getHttpServletMapping()Ljavax/servlet/http/HttpServletMapping;
at org.apache.catalina.core.ApplicationHttpRequest.setRequest(ApplicationHttpRequest.java:690) ~[tomcat-embed-core-9.0.13.jar:9.0.13]
at org.apache.catalina.core.ApplicationHttpRequest.<init>(ApplicationHttpRequest.java:114) ~[tomcat-embed-core-9.0.13.jar:9.0.13]
at org.apache.catalina.core.ApplicationDispatcher.wrapRequest(ApplicationDispatcher.java:917) ~[tomcat-embed-core-9.0.13.jar:9.0.13]
原因分析:
1、Tomcat版本问题。
2、jar包冲突,具体是servlet-api这个jar包。
解决方案:
1、SringBoot项目使用的是内置Tomcat,如果本地的pom文件中引入了servlet-api依赖,删掉这个依赖。
2、本地的pom文件中没有导入servlet-api这个依赖,这时候只能是jdk引起的jar包冲突了,可以试着把jdk/jre目录里的servlet-api删除掉。
3、可以保证本地没有导入servlet-api包,而且是使用了SpringBoot内置的TomCat,可以试着重装JDK。