记一次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变化比较小,帮助中心的搜索功能,只要做小幅的调整就可以了。结束!

时间: 2024-10-18 01:27:32

记一次jar包冲突的相关文章

sbt发布assembly解决jar包冲突问题 deduplicate: different file contents found in the following

一.问题定义 最近在用sbt打assembly包时出现问题,在package的时候,发生jar包冲突/文件冲突问题,两个相同的class来自不同的jar包在classpath内引起冲突. 具体是:我有一个self4j的jar, 还有一个hadoop-common-hdfs的jar包,其中hadoop-common-hdfs.jar内包含了self4j这个jar包,导致冲突. 此类异常一般是由于打包不规范和打包疏忽引起的. (个人认为正确的打包策略是:只打包自己核心功能,不将依赖打包在一起,但是有

sbt公布assembly解决jar包冲突 deduplicate: different file contents found in the following

一个.问题定义 近期使用sbt战斗assembly发生故障时,包,在package什么时候,发生jar包冲突/文件冲突,两个相同class来自不同jar包classpath内心冲突. 有关详细信息:我有一个self4j的jar, hadoop-common-hdfs的jar包.当中hadoop-common-hdfs.jar内包括了self4j这个jar包,导致冲突. 此类异常通常是由于打包不规范和打包疏忽引起的. (个人觉得正确的打包策略是:仅仅打包自己核心功能.不将依赖打包在一起.可是有时为

[转]基于S2SH框架的项目—antlr-2.7.2.jar包冲突问题

java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I        org.hibernate.hql.ast.HqlSqlWalker.generatePositionalParameter(HqlSqlWalker.java:896)        org.hibernate.hql.antlr.HqlSqlBaseWalker.parameter(HqlSqlBaseWalker.java:4819)        or

Jar包冲突解决方法

前言 对于Jar包冲突问题,我们开发人员经常都会有碰到,当我们使用一些jar包中的类.方法等,或者有时遇到一些日志系统的问题(参考另一篇文章Jar包冲突导致的日志问题),我们会遇到ClassNotFoundException,NoSuchFieldException,NoSuchMethodException 之类的运行时异常,从经验上我们就会判断,Jar包冲突了.解决Jar包冲突问题,每个人都有每个人的方法,这里我介绍一下我的方法,供大家参考. 处理方法 当遇到jar包冲突时,我们首先确定是哪

Maven 解决JAR包冲突

在JAR 冲突的情况下, 利用Eclipse方式解决JAR包冲突时比较方便简洁的,步骤如下 1. 在Eclipse 中打开pom.xml , 选择  “Dependency  Hierarchy” 2, 在Filter 输入框中,输入冲突的jar,  比如: slf4j 3. 右边会显示所有依赖此包的JAR包 4.  如果你需要排除 冲突, 可以右键单击: 选择  exclude Maven artifact... 进行以上操作后, MAVEN 的依赖关系如下(举列如下:) 排除前: <depe

共享库方案解决WAS中JAR包冲突

(一)证书导入解决方案 1.登录管理控制台. 2. 展开"安全性"并单击"SSL 证书和密钥管理".在"配置设置"下面,单击"管理端点安全配置". 3. 为 (cell):server5Cell01 管理作用域选择适当的出站配置. 4. 在"相关项目"下面,单击"密钥库和证书",然后单击 CellDefaultTrustStore 密钥库. 5.  在"其他属性"下面

YARN环境中应用程序JAR包冲突问题的分析及解决

Hadoop框架自身集成了很多第三方的JAR包库.Hadoop框架自身启动或者在运行用户的MapReduce等应用程序时,会优先查找Hadoop预置的JAR包.这样的话,当用户的应用程序使用的第三方库已经存在于Hadoop框架的预置目录,但是两者的版本不同时,Hadoop会优先为应用程序加载Hadoop自身预置的JAR包,这种情况的结果是往往会导致应用程序无法正常运行. 下面从我们在实践中遇到的一个实际问题出发,剖析Hadoop on YARN 环境下,MapReduce程序运行时JAR包查找的

websphere找不到类或jar包冲突

Jar包冲突问题是在大型Java软件开发中经常遇到的问题,系统开发人员经常会为解决类似的问题耗费大量的时间进行调试和测试,本文根据各种际情况,结合WebSphere中类加载器,讨论了几种解决jar包冲突问题的办法,并给出了具体实现的步骤及源代码.读者定位为具有Java和WebSphere开发经验的开发人员.读者可以学习到在WebSphere中类加载器的定义以及解决jar包冲突问题的几种办法,并可以直接使用文章中提供的Java代码,从而节省他们的开发和调试时间,提高效率. 大型的基于WebSphe

java jar包冲突解决方法

jar包冲突几乎是每个java程序员都会遇到的问题,而且特别是大工程,jar包各种依赖,经常性发生包冲突.通常会报这样几个运行时异常: java.lang.NoSuchMehodError java.lang.NoClassDefFoundError 这类问题十有八九都是jar包冲突引起,要解决jar包冲突问题,我们先了解下导致这个冲突的原因. 导致jar包冲突的原因 1.mvn的传递依赖特性:mvn编译打包除了会引入直接申明的依赖,还会引入间接申明的依赖 2.mvn的依赖仲裁规则: 1). 按