Hbase依赖的guava是12.0,程序中用到的guava是22.0,jar包冲突,总是报NoSuchMethod和ClassNoDef之类的错误
解决方法:
将冲突的一方第三方依赖包所有的依赖打包成一个整体。借用: maven-shade-plugin插件。
建立一个新的maven项目,将guava-22.0单独打成jar包,并改名,再重新放回源程序
1、guava单独打成jar包,并加入源程序的maven本地仓库
(1)、guava单独打成jar包的pom文件
4.0.0 Guava guava 1.0 com.google.guava guava 22.0 org.apache.maven.plugins maven-shade-plugin 3.1.0 false package shade com.google.guava Guava.guava com.google.common Guava.common
(2)打入源程序的maven本地仓库
mvn install:install-file -Dfile=XXX/guava-1.0.jar -DgroupId=Guava -DartifactId=guava -Dversion=1.0 -Dpackaging=jar
2、源程序引入新的guava-22.0jar包
Guava guava 1.0
3、程序中引用新的guava
//import com.google.common.base.Charsets;//import com.google.common.hash.BloomFilter;//import com.google.common.hash.Funnel;//import com.google.common.hash.PrimitiveSink; import Guava.common.hash.BloomFilter;import Guava.common.hash.Funnels;
注释部分是原来的import
文章整理自: