HBase与Protobuf3.0之间版本冲突的问题:java.lang.NoClassDefFoundError:org.apache.hadoop.hbase.util.ByteStringer

现象:

今天在给服务添加grpc接口的时候,查询hbase时突然报了如下错误:java.lang.NoClassDefFoundError:org.apache.hadoop.hbase.util.ByteStringer

问题分析:

1:在java中,出现NoClassDefFoundError时,一般都是jar冲突了,即依赖了同一个组件的不同版本,此时,需要把依赖树打出来看看,笔者用的是gradle,因此执行命令:

    gradle appName:dependencies

    果然,看下了protobuf存在2.5.0的版本和3.6.1的版本;hbase client中默认用的是2.5.0的版本,hbase2.0之前的版本都是依赖2.5.0的protobuf;

问题解决:

使用 hbase-shaded-client来替代 hbase-client

gradle 依赖如下:

compile "org.apache.hbase:hbase-shaded-client:1.4.8"

重新编译打包 

gradle build 

编译通过,再debug一下,通过,完美解决问题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值