idea启动springboot项目 报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader()Ljav...

有一次启动springboot项目的时候,报了一个非常奇怪的错误,说是找不到servletContext,springboot不是自带tomcat的吗?

在网上找了好久,说是用以下方式解决。

解决方式:

将tomcat的lib包下的servlet-api.jar 拷贝到java的jre下的lib里即可。(需要在idea中重新导入一下jdk)

mac 电脑下寻找java安装目录方式:在终端下执行  

/usr/libexec/java_home -V 

但是查看同事的java的jre包下并没有这个jar,但是人家都能启动起来。这个就不知到为什么了?

虽然自己解决了这个问题,却不知所以然。。。。

后来我发现我们的项目里用的是 undertow服务器,难道是跟这个有关系吗?

 2.另一种解决方式:

今天将项目的服务器由tomcat换成undertow,发现项目在本地可以启动成功,但是发不到服务器就启动不成功,就报跟上面同样的错误,原来是我本地的jre环境有sevlet-api,但是我不能也往服务器的jre也放同样的吧,毕竟这样不合理。后来就查找原因,原来是undertow的jar包中已经有了sevlet-api 3.1版本的,但是为何启动不成功呢,原来我的另一个jar包中也有sevlet-api,而且还是2.5版本的,

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>compile</scope>
</dependency>
项目在启动的时候优先找到了2.5版本的,而2.5版本的ServletContext类里没有getClassLoader这个方法,所以才报的错,解决方式是将2.5版本的排除,服务器就启动成功了。
总结:看来maven项目的依赖还得多研究。

转载于:https://www.cnblogs.com/bfyq/p/9270391.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值