记一次jar包冲突

Posted wangliyue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次jar包冲突相关的知识,希望对你有一定的参考价值。

题记:永远不要在同一个项目中,引用不同版本的两个jar包,否则,这可能就是一个大坑。

在做网校项目的时候,帮助中心要使用lucene,所以就引入了lucene-5.5.1的包,删掉了原先存在于项目中的lucene-3.0.0的包,

由于项目中以前使用了paoding-1.0.0的包,而paoding依赖于lucene,当时并没有意识到这个问题,就直接把lucene-3.0.0的包

删掉了。最后把帮助中心在lucene-5.5.1下做好之后,才发现paoding的功能不能使用了,因为paoding-1.0.0只支持lucene-3.0.0

,无奈之下就又把lucene-3.0.0的包又给加回来了。注意,这个时候我们的项目中同时存在lucene-5.5.1和lucene-3.0.0两个版本的

jar包。。。。这个时候,我再去测使用lucene-5.5.1的帮助中心的功能时,发现帮助中心的搜索功能也报错了,总是报出NoSuchMethodException,

无论怎么清理,重新编译,总是这个错误。折腾了一个早上,把lucene-3.0.0的包彻底从项目中移除(从lib中删除,不是从移除类路径就行了)。

可见,虽然帮助中心的代码上import的全是lucene-5.5.1的类,但是在虚拟机中,还是使用了lucene-3.0.0的某些类,所以总是报出NoSuchMethodException,

好了,问题找到了,就是两个不同版本的jar包冲突了。。。。此时,又面临一个尴尬,要使用lucene-5.5.1,那么paoding不能正常使用,要使用lucene-3.0.0的话,

帮助中心的搜索功能需要去调整成3.0.0的版本。。。。总后在网上找到了paoding-2.0.4和lucene-4.8.0这个组合搭配可是使用,而且lucene-4.8.0的api相对于

lucene-5.5.1的api变化比较小,帮助中心的搜索功能,只要做小幅的调整就可以了。结束!

 

以上是关于记一次jar包冲突的主要内容,如果未能解决你的问题,请参考以下文章

解决Maven的jar包冲突

Android引入多个jar包,冲突问题解决方案

解决jar包冲突引起的报错信息

jar包冲突的解决方法

升级SpringBoot 2.1.X 各jar包冲突、兼容问题

IntelliJ IDEA查找依赖关系,解决jar包冲突