Springboot:Caused by: java.lang.NoSuchMethodError...

版权声明:情之所钟,虽丑不嫌。 https://blog.csdn.net/u012827205/article/details/81482257

当前问题,我从移动前端协助后台开发跑项目遇到的第一个问题。本来吧,功力就不是很深厚。遇到这个问题,把身边自诩已经工作3年5年的后台”牛牛”请来帮忙解决下问题。结果,也是一个劲儿的网上Google、百度!可最终和我前期结果是一样的无能为力。我想算了吧,哥们自己来!然后这里贴出自己的解决思路就是为了让更多朋友不要像我一样浪费一天半时间就为解决这个不值当的小问题上。网上确实也有很多的这种问题出现并贴出在自己的博客上,但是我觉得会有很多向我一样刚接触这种后台开发的看不懂,就是看不懂。而我的目的,只为让你瞬间解决问题,不再浪费时间,也不用去麻烦那些忙碌的大牛

问题展示:

Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
    at org.apache.catalina.authenticator.AuthenticatorBase.startInternal(AuthenticatorBase.java:1122) ~[tomcat-embed-core-8.5.5.jar:8.5.5]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.5.5.jar:8.5.5]
    ... 10 common frames omitted

图片3d效果展示:

这里写图片描述

其实真正出现问题的提示是这个:
这里写图片描述

具体出现问题的项目结构请看:
这里写图片描述
使用maven引入的jar包结构列表:
这里写图片描述
这里写图片描述

终极解决方案

根据最后解决问题的方式以及思路,其实在别人的博客中还是能够得出很多启发的。比如这里的她的博客

其中有几句很重要的信息,基本已经和我的问题已经很接近了。而,我的问题就是出现在servlet-api.jar冲突导致的。其实这种问题就是这个原因。怎么解决才是今天的主题?!简单说就是,在安装jdk的目录,C:\Program Files\Java\jre1.8.0_141\lib\ext 下的如果有servlet-api.jar就删掉,并且保证你启动的tomcat版本Springboot项目tomcat版本与项目的有关tomcat的jar包版本基本一致。因为使用Springboot时候,项目本身就自动下载有servlet-api.jar功能的api。 所以最终就与...lib\ext下的jar导致了错误的结果。

解决问题的思路

正确时候,项目对应开发版本

spring-boot-starter-parente版本 Eclipse版本 Maven版本 Tomcat版本
1.4.1.RELEASE Release 4.7.0 (Oxygen) apache-maven-3.5.4 apache-tomcat-8.5.32

网上海量搜索

这个一般都会有的,希望能够顺利些!但是即使不能完全的解决你的问题,但是能够让你明白你的问题出在什么地方了,这是很重要的努力结果!

检查你的配置环境

Tomcat环境是否正确配置

windows环境,下面是正确了。具体配置可Google。
这里写图片描述
Eclipse环境,不太清楚流程也可Google。完了之后,在Eclipse上Server下使用start命令启动一下就能判断是否配置好了。

Maven环境是否正确配置

windows环境,下面是正确了。具体配置可Google。有两个地方需注意要正确配置:
1,用户配置上,这里我自定义了本地仓库。
这里写图片描述
2,编译环境上,maven编译使用的是jdk不是jre。
这里写图片描述
完了之后,使用maven命令test一下就能判断是否配置好了。

解决问题

当然,我错误的配置时候,使用的是Tomcat7.0.8,然后又在官网下载了Tomcat8.5.32进行配置。
而在版本Tomcat7.0.8出错的原因是,之前我把Tomcatlib包下的servlet-api.jar拷贝到了C:\Program Files\Java\jre1.8.0_141\lib\ext目录下,而使用Springboot时候,maven又会下载Springboot配置下的jar包。由此这两处的jar包就理所当然的冲突了!
我的解决方式,是下载了一个和项目中的Springboot下载版本相同的Tomcat并布置到项目中,然后删除了..lib\ext目录下的servlet-api.jar。再次执行,就成功了。
来一起看下成功运行的结果:
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/u012827205/article/details/81482257