war包部署到新服务器报错java.lang.NoClassDefFoundError: com/sun/jersey/server/impl/ThreadLocalInvoker
今天项目部署到新服务器,本来准备高高兴兴上(hua)班(shui),结果在登陆界面就报了个500的错误,然后往下一看还有这个错误
java.lang.NoClassDefFoundError: com/sun/jersey/server/impl/ThreadLocalInvoker
于是我又把war包在本地的tomcat里面部署了一下,却一切正常。
问题分析
- 可能是服务器jdk版本不一致。
- 可能是tomcat环境不一致。
问题排查
1.检查jdk版本。
新服务器
可以看出并没有什么差别。
2.检查tomcat版本。
新服务器
新服务器的tomcat版本要高
问题解决方案
方案一:服务端解决
让新服务器tomcat版本与老服务器一致,但服务器不归我管,只好找另外的解决方案。
方案二:排查代码
从图中可以发现并没有ThreadLocalInvoker这个类,于是去maven库看了一下比较新的版本。然后我把com.cun.jersey相关的所有包升级到1.19
升级maven依赖版本
现在可以看到有ThreadLocalInvoker这个实现类了,重新打包部署。一切正常了。
开心下班🛀
网友评论