使用protobuf3和一些依赖于Java

时间:2016-12-26 04:01:25

标签: java gradle hbase protocol-buffers

我使用protobuf3来表示我们的数据,而我们需要hbase来存储数据,似乎hbase依赖于protobuf2。

当我编写以下行来创建我们的hbase表

admin.createTable(desc);

然后我得到了一个例外:NoClassDefFoundError: com/google/protobuf/LiteralByteString

我已尝试使用gradle's shadow plugin将com.google.protobuf重新定位到shadow.google.com,然后它会抛出类似的消息NoClassDefFoundError: shadow/google/protobuf/LiteralByteString

1 个答案:

答案 0 :(得分:0)

  1. 创建一个子项目,并将其命名为' hbase-wrapper'
  2. 将hbase的依赖项移至新项目
  3. 新项目中的影子protobuf
  4. 为主项目上的子项目添加依赖项
  5. 这里有一些剪辑代码

    // part of build.gradle of the sub-project
    ...
    dependencies {
        compile group: 'org.apache.hbase', name: 'hbase-client', version: '1.2.4'
    }
    
    shadowJar {
        relocate('com.google.protobuf', 'hbasesaver.google.protobuf')
    }
    
    // part of build.gradle for main project
    ...
    compile project(path: ':hbase-wrapper', configuration: 'shadow')