一次升级hibernate版本到5.4.21后仅单个机器出现的NoSuchMethodError问题
背景:
项目一个版本已迭代测试一段时间,负责登录的组件,在某台真机上出现如下报错:期间其他测试人员的环境正常
奇怪的线索:
a. 相同 jdk环境1.8.0_131下仅在某个机器上出现问题(该机器必现) 其他机器正常
b. 报错位置里 红色框两个类属于同一个jar包
怎么同一个jar里还出现解析不到?而且仅在一台服务上这样。当前这个jar包也没有多个出现但是版本不同的情况呀。
后来请教老大,说这种在一台机器上出现,基本上就是jar包冲突问题了,为什么其他环境没出现,基本是看运气,和类与jar的加载顺序有关。如果不是同一个jar的版本冲突,可能还是相关jar包的版本冲突。
解决办法:保证hibernate相关版本一致后,问题得到解决。
如图:
只是升级了这个一个jar包版本到5.4.21后,程序在发现的环境上部署后确认已修复。
结论: 不要觉得只在一台机器上出现就怀疑环境的问题,仍然最开始怀疑的就是jar冲突问题。尤其是本包内的调用NoSuchMethodError问题。