问题标签 [protobuf-java]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
435 浏览

protocol-buffers - mybatis映射protobuf生成的类

如何将结果映射到 mybatis 映射器中的 protobuf 类?protobuf 类中没有 set 方法。我应该使用 newBuilder 和 build 方法生成实体类吗?

0 投票
2 回答
3224 浏览

java - 如何在 Java 中获取 protobuf 自定义选项的值?

背景:我正在写一个protoc插件。

自定义 protobuf 选项通过以下方式实现:

以下是一个示例用法:

尝试遵循https://developers.google.com/protocol-buffers/docs/proto#options,以下(在 Groovy 中)不起作用:

Java中访问自定义选项值的正确方法是什么?

0 投票
0 回答
827 浏览

java - 在 intellij 中使用 java_multiple_files 时 Protobuf 没有生成正确的导入

如下example.proto

并用 Protoc 生成它,生成了一些类:

  • Example.java
  • 测试事件.java
  • TestEventOrBuilder.java

问题是自动生成的 TestEvent 类无法编译。它的类声明生成为

TestEevent不 import TestEventOrBuilder,这就是它不编译的原因(问题很简单cannot resolve symbol TestEventOrBuilder),根据 Intellij。尝试以自己的方式解决时,Intellij IDEA将课程更改为

这是ProtobufIntellij 的一个已知问题吗?如何修复自动编译以理解TestEventOrBuilder

0 投票
1 回答
905 浏览

java - 如何在内存中使用协议缓冲区序列化数据?

考虑以下代码片段。

现在,如果我尝试使用解析相同的文件

我认为在.toString()方法中改变了编码(可能)。谁能建议一种将其序列化为message.writeTo()字符串的方法(应该能够再次解析)。

0 投票
1 回答
484 浏览

protocol-buffers - 如何在使用 writeDelimitedTo() 写入的字节流中挽救格式错误的块后的数据

我使用 protobuf-java-util:3.0.0-beta-2。

我创建了一个文件,其中包含许多用Message#writeDelimitedTo(). 代码是这样的:

我用Builder#mergeDelimitedFrom(). 像这样的东西:

这样,我可以毫无问题地读取绝大多数文件,但有时会遇到如下异常:

编写这些文件的代码在有时会断电的移动设备上运行。在这种情况下,我的应用程序会一直写入同一个文件,并且出现异常的机会很高。因此,显然我的代码在这种情况下会创建一些格式错误的文件。我的代码可以读取文件的某些部分,但由于错误,它无法读取格式错误的块之后的部分。

现在我需要在格式错误的块之后拯救和读取数据,但我找不到任何方法来做到这一点。所以,我想知道以下几点:

  1. 有什么办法可以在格式错误的块之后拯救和读取上面代码编写的部分?
  2. 如果没有办法做到这一点,我该如何改进我的代码,以便我的应用程序能够应对这些问题?有没有可以容忍电源故障的最佳实践?

完整的异常堆栈跟踪是这样的:

0 投票
1 回答
6324 浏览

android-gradle-plugin - protobuf gradle 插件无法编译

我正在尝试使用 gradle 插件编译 protobuf 文件,但出现以下错误:

不知道为什么会发生这种情况...... protobuf 文件按预期正确生成,但最后一步失败并出现这个奇怪的错误。

这是我的毕业文件:

我只是添加了 protobuf 自述文件(https://github.com/google/protobuf-gradle-plugin)中写的内容,并没有做任何花哨的东西......

0 投票
1 回答
336 浏览

java - “字段的.proto文件中的标签号”和“生成的代码中的数字(用于通过switch case解析)”之间的关系是什么?

考虑以下 proto 文件。

当我们为它生成代码时。使用 readTag() 完成解析,然后使用 switch 语句设置相应的字段。或考虑以下代码段。

我的问题是 proto 文件中的“字段 F1 的标签 1”与“生成代码中的案例 10”和“字段 s2 的标签 5”与“生成代码中的案例 42”之间的关系是什么。

0 投票
3 回答
8423 浏览

java - 协议缓冲区:如何在 Java 中解析 .proto 文件

我正在尝试在 Java 中动态解析给定的 .proto 文件以解码 Protobuf 编码的二进制文件。

我有以下解析方法,其中“proto”字符串包含 .proto 文件的内容:

但是,在执行时,前一个方法会引发异常,并显示消息“Protocol message tag has invalid wire type.”。我使用来自 Google 的示例 .proto 文件,所以我猜它是有效的:https ://github.com/google/protobuf/blob/master/examples/addressbook.proto

这是堆栈跟踪:

任何的想法?谢谢!

0 投票
1 回答
4258 浏览

java - 如何修复从 JsonFormat.parser().merge(...) 抛出的“com.google.protobuf.InvalidProtocolBufferException:找不到字段”?

我有 2 个 Protobuf 模型:

User

Employee

我可以使用以下方法创建模型并将其序列化为 JSON JsonFormat.printer().print(...)

但是,将生成的 JSON 反序列化回 Java 对象失败,原因com.google.protobuf.InvalidProtocolBufferException: Cannot find field: details in message demo.User如下:

而且似乎也没有办法将 an 传递ExtensionRegistryJsonFormat.parser()任何一个。

有没有办法让这个Protobuf → JSON → Protobuf序列化/反序列化链工作?

0 投票
1 回答
976 浏览

hive - 如何反序列化 Hive 中的 ProtoBuf 序列化 HBase 列?

我已经使用 ProtoBuf 序列化类并存储在 HBase 列中。我想减少简单聚合的 Map Reduce 作业的数量,所以我需要类似 SQL 的工具来查询数据。如果我使用 Hive,是否可以扩展 HBaseStorageHandler 并为每个表编写我们自己的 Serde?或者任何其他好的解决方案都是可用的。

更新:

我将 HBase 表创建为

创建“蜂巢:用户”,“我”

并从 java api 插入用户数据,

我的扫描结果如下:

当我在 Hive 中查询表时,我看不到任何记录。这是我用来创建表的命令。

当我查询配置单元表时,我没有看到从 hbase 插入的记录。

你能告诉我这里有什么问题吗?