canal与hbase的protobuf版本冲突
2016-10-31 00:00
375 查看
java.lang.UnsupportedOperationException: This is supposed to be overridden by subclasses. at com.google.protobuf.GeneratedMessage.getUnknownFields(GeneratedMessage.java:180) at com.alibaba.otter.canal.protocol.CanalPacket$ClientAuth.getSerializedSize(CanalPacket.java:2045) at com.google.protobuf.AbstractMessageLite.toByteString(AbstractMessageLite.java:49) at com.alibaba.otter.canal.client.impl.SimpleCanalConnector.doConnect(SimpleCanalConnector.java:150) at com.alibaba.otter.canal.client.impl.SimpleCanalConnector.connect(SimpleCanalConnector.java:97) at com.alibaba.otter.canal.client.CanalConnector$connect.call(Unknown Source)
测试环境:canal server和client版本:v1.0.22;hbase-client版本:1.0.1.1
报错原因:canal 1.0.22版本依赖的protobuf版本为2.4.1,hbase依赖的protobuf版本为2.5.0,存在冲突。canal客户端连接canal server时,客户端classloader加载的版本为2.5.0,而服务端protobuf版本为2.4.1,导致请求报错。
解决方法:canal的protobuf版本升级为2.5.0。
步骤:重新生成protobuf java文件,并替换protocol/src/main/java/com/alibaba/otter/canal/protocol/;重新打canal-protocol包,替换client和server的canal-protocol依赖。
java文件拷贝:https://github.com/chaopengio/canal/tree/canal-1.0.21-protobuf-2.5.0/protocol/src/main/java/com/alibaba/otter/canal/protocol
参考:https://github.com/alibaba/canal/issues/125
相关文章推荐
- 重装protobuf2.6.1版本
- java.lang.IllegalAccessError: class com.google.protobuf.HBaseZeroCopyByteString
- 最快的序列化组件protobuf的.net版本protobuf.net
- 如何编译安装protobuf极其python版本
- caffe安装中protobuf的版本问题
- canal与kafka的zkclient版本冲突
- Caffe安装中多版本protobuf选择问题
- 在ubuntu14.04编译protobuf-c for arm版本
- win环境下实现导出protobuf文件的lua版本
- 在Windows上一键编译各种版本的Protobuf
- Protobuf java版本安装步骤
- proto-gen AS3版本的protobuf extension反序列化错误解决方法
- gtest + protoBuf vs2010 win32 环境搭建(解决lib包冲突问题)
- 关于protobuf javascript的版本
- Google Protobuf 3版本介绍
- caffe中使用python自定义层出现protobuf版本不对
- hbase probuf版本不一致问题的解决
- (转)C++ 版本的protobuf 动态序列化方法
- 编译安装hbase0.96.x(系统为CentOS,完全避免运行时出现系统版本冲突)
- Google protobuf解析消息逻辑的版本问题