バージョンを使用して、いるProtobuf生産テンプレートコードを使用します。
<依存性> <のgroupId> com.google.protobuf </のgroupId> <たartifactId>いるProtobuf-のJava </たartifactId> <バージョン> 3.6.1 </バージョン> </依存>
HBaseのバージョンがある:1.2.1-cdh5.1.4.0
印刷Mavenの依存関係ツリーの場合は、のHBaseいるProtobufバージョン2.5.0を見ることができます
この場合、パッケージは文句を言うが、一度実行していない、エラーが発生します。
java.lang.ClassNotFoundException:com.google.protobuf.LiteralByteString
だから我々はそれを解決する必要がありますか?
答えは下位互換性のある方法であることがある - 高いバージョンを保持することで、低いバージョンを削除
最終的なアプローチは、一例として、私にはMavenの依存関係にあるの低いバージョンを削除することです:
<依存性> <のgroupId> org.apache.hbase </のgroupId> <たartifactId> HBaseのクライアント</たartifactId> <バージョン> $ {hbase.version} - $ {cdh.version} </バージョン> <除外> <除外> <のgroupId> org.jboss.netty </のgroupId> <たartifactId>網状</たartifactId> </除外> <除外> <のgroupId> io.netty </のgroupId> <たartifactId>網状オール</たartifactId> </除外> <除外> <groupIdを> org.apache.hbase </ groupIdを> <たartifactId> HBaseのプロトコル</たartifactId> </除外> </除外> </依存> <依存性> <のgroupId> org.apache.hbase </のgroupId> <たartifactId> HBaseのサーバ</たartifactId> <バージョン> $ {hbase.version} - $ {cdh.version} < /バージョン> <除外> <除外> <のgroupId> org.jboss.netty </のgroupId> <たartifactId>網状</たartifactId> </除外> <除外> <のgroupId> io.netty </のgroupId> <たartifactId>網状-all </たartifactId> </除外> <除外> <groupIdを> org.apache.hbase </ groupIdを> <たartifactId> HBaseのプロトコル</たartifactId> </除外> </除外> </依存>