问题标签 [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 投票
1 回答
1206 浏览

scala - Protobuf:如何使用现有的案例类

项目中已经使用了一些案例类。这些类也用于光滑映射。这些类扩展了一些额外的特征。

我不想从*.proto描述中生成所有这些类。

有没有机会将它们扩展protobuf?或者我应该为它们使用包装器。这些包装器将在其中描述*.proto并从中生成。

0 投票
1 回答
807 浏览

scala - Protobuf:如何在 proto 中描述 Option[Timestamp]

如何Option[Timestamp]*.proto文件中描述以下案例类:

*.proto包含:

0 投票
1 回答
366 浏览

java - Protobuf 解析器解析其他对象?

我一直在为我的 Java 项目使用协议缓冲区。我发现 protobuf 对象的解析器解析其他 Protobuf 数据并且不会引发异常。相反,它返回没有任何数据的解析器类型的对象(不是默认实例)

下面是我的测试原型文件

下面是我的测试代码

此代码正常工作,结果为“假”。

我无法理解这种行为,我需要一种情况,我必须解析一些序列化的 protobuf 对象,如果一个解析器失败,我必须尝试另一个解析器。我该如何解决这个问题。

谢谢。

0 投票
1 回答
906 浏览

android - 将 Google Cloud Speech API protobuf gradle 更新为 0.8.5 重复库

将 protobuf gradle 更新到此项目的 0.8.5 后 https://github.com/GoogleCloudPlatform/android-docs-samples/tree/master/speech/Speech,我收到此错误消息:

程序类型已存在:com.google.protobuf.AbstractMessageLite$Builder$LimitedInputStream 不确定要删除什么

0 投票
0 回答
48 浏览

java - 如果在 Java 中只知道类,我如何在运行时反序列化 protobuf 消息?

我正在尝试反序列化 Java 中的 protobuf 消息,其中在运行时仅给出相应消息的 Class 对象。我有一个使用反射的解决方案,但我不知道这是否是最好的也是唯一的方法:

0 投票
1 回答
792 浏览

java - protoc 中的方法 Marshaller 错误在 Android 上生成 Grpc 服务

我有一个运行grpc端点的服务器,我想使用 android 客户端连接到该端点。我正在尝试生成所需的..Grpc.java内容,以便我可以使用这些.newStub()方法来创建grpc请求。

我有一个包含以下服务的原始文件:

我的 android 应用程序build.gradle包含protobuf如下所列的任务和依赖项:

生成的ProtoFileGrpc.java文件在构建后包含错误,如下所示:

0 投票
1 回答
3689 浏览

protocol-buffers - 如何使 protobuf 不区分大小写?

我有一个这样的protobuf合同,

message Car{ string carId = 1; }

我从这个合同生成 java 类并用它来解析 JSON 请求。

现在,如果我的 JSON 具有“CarID”或“carid”,那么 protobuf 生成的 java 类将无法识别该字段。如何使其不区分大小写?

0 投票
2 回答
5247 浏览

protocol-buffers - 带有一些字符串的 Protobuf InvalidProtocolBufferException

我们使用 protobuf v.3 通过 HTTP 将消息从 C# 客户端传输到 Java 服务器。

消息原型如下所示:

客户端和服务器都对字符串使用 UTF-8 字符编码。

当我们使用像“abc”这样的短字符串值时一切都很好,但是当我们尝试传输包含 198 个字符的字符串时,我们会发现一个异常:

我们尝试比较包含 protobuf 数据的偶数字节数组,但没有找到解决方案。对于“aaa”字符串字节数组以这个字节开头:

10 3 97 97 97

其中 10 是 protobuf 字段编号,3 是字符串长度,69 65 67 是“aaa”。

对于字符串

“啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊”

其中包含 198 个字符,字节数组以此开头:

其中 10 是 protobuf 字段号,198 是字符串长度,1 似乎是字符串标识符,还是什么?

以及为什么 protobuf 无法解析此消息?

已经花了将近一天的时间来寻找这个问题的解决方案,任何帮助表示赞赏。

更新:

我们从客户端和服务器都进行了转储,但奇怪的是 - 转储是不同的!

在发送到服务器之前,从客户端转储 Protobuf:

服务器接收的 Protobuf 转储:

正如你所看到的,protobuf 数据头是不同的......这完全打破了我的想法,怎么会发生这种情况?

UPDATE2:我们进行了一项研究,发现此问题仅发生在长度超过 128 个符号的字符串中。如果字符串由 128 个或更少的符号组成 - 没有问题。

0 投票
1 回答
151 浏览

hadoop - 通过 MapReduce 生成 tfrecord 时出错

我正在尝试使用 MR 作业生成 TFRecord,但遇到一个我无法理解的错误,似乎找不到读取列表的方法?当我尝试构建遵循 tensorflow 中的 hadoop 示例的示例时,它会抛出以下内容。谁能指出一个方法?谢谢

0 投票
2 回答
2158 浏览

protocol-buffers - 如何将我自己的代码从 proto 文件添加到 JAVA 生成的类中?

我正在使用 protobuf,并且正在从以下 proto 文件生成 JAVA 类。

现在我需要向生成的文件添加一些代码,我发现可以使用自定义插件(https://developers.google.com/protocol-buffers/docs/reference/java-generated#plugins)。我正在尝试用 Java 生成那个插件,就像这样。

然后我跑

问题是,在我的Test.java主要方法中,我不知道如何访问由该选项创建的文件,--java_out以便我可以使用它们的插入点。当前CodeGeneratorResponse,默认实例的 为空(无文件)。

有谁知道我如何CodeGeneratorResponse从 --java_out 获取,以便我可以向生成的类添加更多代码?

提前致谢。