**最近在练习项目时发现SpringBoot每次运行后再调用对应的Controller后控制台总会提示
NoSuchMethodError:…HttpServletRequest.getHttpServletMapping()的提示,虽然项目还能够正常运行,但是看着就很不舒服,刚开始看网上说是SpringBoot2.x内置的tomcat9,tomcat9使用的是servletAPI v4,但是SpringBoot 2.x还包含着 servletAPI v3.1,遂更换了Tomcat的版本。
结果发现直接无法启动了,提示The following method did not exist: org.apache.tomcat.util.modeler.Registry.disableRegistry()V,该报错表示无法通过指定的路径找到该类。 最后在stackoverflow上找到了大神提供的解决方案。 原因是:你的mavenvending仓库中springboot内嵌的tomcat的版本过多,导致匹配混乱
解决方法:只需将本地的maven仓库中的D:\MavenLocalRepository\org\apache\tomcat\embed(这里是我的路径,这个路径表示springboot的内嵌tomcat依赖)中的文件夹删除后重新下载即统一版本就可以了。 同时再次调用Controller时也不会在控制台提示NoSuchMethodError了。**