当前位置: 首页 > 知识库问答 >
问题:

在一些依赖于Java中的Propbuf2的库中使用Propbuf3

窦华晖
2023-03-14

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

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

admin.createTable(desc);

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

我曾尝试使用gradle的shadow插件重新定位com.google.protobuf到shadow。谷歌。com,然后它抛出一条类似的消息NoClassDefFoundError:shadow/google/protobuf/LiteralByteString。


共有1个答案

牛经赋
2023-03-14
  1. 创建一个子项目,并将其命名为“hbase包装器”
  2. 将hbase的依赖项移动到新项目中
  3. 新项目中的影子协议
  4. 向主项目的子项目添加依赖项

这是一些剪贴代码

// 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')
 类似资料:
  • 对于一个项目,我有这样类型的结构: 这很好,但前提是jar已经由上一个构建生成,这意味着我必须启动两次才能使其工作。 我认为问题在于,与常规依赖项(例如)不同,在不请求构建子项目的情况下计算文件树依赖项,并且在第一次构建时,没有向类路径添加jar文件。 我尝试了,但是没有成功,因为它是在求值之后执行的。 我不能将lib切换到Java插件,因为它是特定于Android的代码,而且我需要为其他项目构建

  • 在这个新系列中,我将解释什么是依赖注入,它的主要目的是什么,以及在Android工程中如何使用Dagger函数库实现它,Dagger是目前最流行的专为Android设计的依赖注入函数库。 本文是之前的文章《Android中MVP的实现》的后续之作,因为我相信读者中有一部分人会很乐意看到这两个特性在同一个工程中实现,而且我认为它们可以很好的协同工作。 本文将仅介绍基本的理论知识来奠定基础。理解依赖注

  • 对于扩展调试信息,从命令行执行Gradle,使用。/gradlew--info:app:assembleDebug查看工件的dep endency路径。此错误消息来自google-services Gradle插件,在https://github.com/google/play-services-plugins上报告问题,并通过向build.Gradle文件添加“GoogleServices{di

  • 顾名思义,仓库就存放东西的. 放什么东西呢? 简单来说就是存放我们依赖的jar包. Gradle支持哪些仓库? Maven仓库 Ivy仓库 平级目录仓库 如何在构建中加入这些仓库? Ivy仓库应该用的人不多吧,这里就不多作介绍了,重点放在maven仓库上. 在build.gradle中添加仓库的声明,方法如下: 从Maven仓库中获取依赖 repositories { 1.从指定的远程mave

  • 我收到这个错误消息 mylib。dll是一个JNI包装器,它使用其他C库。 当我打开mylib时。dll带有依赖项遍历器它显示所有依赖库都可用! 有没有办法检查java中找不到哪个库? 我用Visual Studio编译了第三方库,用mingw32编译了mylib。这可能是个问题吗?