记一次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包冲突的主要内容,如果未能解决你的问题,请参考以下文章