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

sorting - 如何比较 google protobuf ByteString

在 google protobuf 中,它提供了一种称为 ByteString 的类型,我查看了文档:https ://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/ByteString没有比较方法可供使用. 比方说:

0 投票
1 回答
665 浏览

android-studio - 在单元测试中处理 protobuf 类时出现 NoSuchMethod 错误

我正在尝试使用 protobuf 模型编写类的单元测试并在 Android Studio 中运行它们。
例如这是一个简单的转换器测试

待测类:

proto (实际上是内部消息,但对于 flat 是一样的):

android studio 控制台输出:

java.lang.NoSuchMethodError: proto.api.response.ConfigAndroidOuterClass$ConfigAndroid$UpdateConfig.makeImmutable()V

尽管如此.gradlew/testDebugUnitTest成功完成。AS配置等可能有问题。

Android Studio 版本:3.6.0,在 3.5.2 中是一样的。
Protobuf 精简版:3.0.1。
Protobuf gradle 插件:0.8.8。

0 投票
1 回答
1094 浏览

protocol-buffers - Proto 3:一种在字段级别添加元数据的方法

我正在使用 protobuf-gradle-plugin 从 proto 文件生成 java 类。

我的原型文件看起来像

该插件正在为我生成类,但现在我想在字段级别添加一些元数据信息。像

这可能吗?

0 投票
1 回答
1439 浏览

gradle - Gradle protobuf 任务未从依赖项中获取定义

我有两个 Gradle 子项目,它们基本上是哑 protobuf 容器。一个子项目需要从另一个导入定义,但我似乎无法弄清楚如何让 protobuf Gradle 插件正常工作(我对 Gradle 还很陌生)。

这是一个例子。

目录布局:

build.gradle(顶级)

设置.gradle

gradle.properties

依赖/build.gradle

依赖/src/main/proto/dependency.proto

主/build.gradle

主/src/main/proto/main.proto

当我尝试构建时,我收到此错误:

我阅读了插件的文档这个答案,但我无法让它工作。知道为什么 protobuf 任务没有获取 dependency.proto 吗?

0 投票
1 回答
1277 浏览

android - 解决 Firebase InApp 消息传递和 Dialogflow 依赖项

我有一个项目,我同时使用 FirebaseInAppMessaging 和 Dialogflow,但我很难解决依赖关系。添加 FirebaseInAppMessaging 和 Dialogflow 后,出现以下错误:

然后,如果我按如下方式排除依赖项:

我收到以下错误:

然后我继续将排除模块更改为

代码编译成功,但应用程序在安装后立即崩溃。我做了一些研究并意识到排除模块'protobuf-lite'protolite-well-known-typesFirebaseInAppMessaging 需要运行,因此它无法初始化,从而导致应用程序在启动时崩溃。

知道如何解决这个问题吗?

下面是我完整的 gradle 文件。当我从依赖项列表中排除 FirebaseInAppMessaging 并在包含它时开始给出错误时,该代码工作得很好。

0 投票
1 回答
444 浏览

java - SpringBoot 和 ProtoBuf:如何通过在响应正文中添加错误来使 HTTP 400s 更有用?

我们用于ProtobufJsonFormatHttpMessageConverter将 JSON 请求正文解析为 REST 端点中的原型:

在请求中,假设有一个枚举,如果值中有错字,例如,

我得到HTTP 400一个空的响应,控制台有:

控制台日志中的问题很清楚:

我可以通过包含上述信息以某种方式使响应正文更有用吗?

0 投票
1 回答
231 浏览

java - java - 如何在java中使用TextFormat将protobuf消息转换为字符串时控制字段的顺序?

我有一个 protobuf 消息,当使用它转换为字符串时,TextFormat.printToString()如下所示:-

原型定义如下所示

使用 将原始消息转换为字符串时是否可以显示description为第一个字段TextFormat.printToString()

0 投票
0 回答
609 浏览

mapstruct - MapStruct protobuf 列表到 Pojo 映射

作为 GRPC api 的一部分,我正在尝试将 proto 自动生成的类映射到 pojo。这是 .proto 文件

上述代码的映射器是。我根据它参考了 mapstruct 提供的示例我不需要提供 VerificationModelProto 到 List 的显式映射但是我得到编译器错误

错误:无法将属性“集合验证”映射到“VerificationModelProto 验证列表”。考虑声明/实现一个映射方法:“VerificationModelProto map(Collection value)”。

如何度过这个难关。我将 CollectionMappingStrategy 添加为 CollectionMappingStrategy.ADDER_PREFERRED。

0 投票
1 回答
8659 浏览

java - 使用带有 MapStruct 的构建器将空值映射到默认值

我想将字段从类映射SourceTarget类,如果源值为null,我想根据数据类型将其转换为默认值(字符串为“”,数字类型为 0 等)。对于设置值,我没有使用常规设置器,而是使用构建器(使用protobuf,因此方法的名称是newBuilder()and build())。

我的映射器看起来像这样:

使用此代码调用生成的映射器实现target.setValue(source.getValue()),而不是执行 null 检查并在 source 返回时设置默认值null。有趣的部分是当我向方法添加以下注释时map,实现中存在空检查。

这是 MapStruct 中带有构建器的错误,还是我缺少一些配置才能将空映射设置为默认策略,而不是在所有字段映射上复制它?

编辑:由于某种原因,添加nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS到类级别@Mapper注释会添加空检查,但不会显式设置值,只是跳过对setValue. 对于 protobuf,这没关系,因为此功能在库中,但对于其他实现,该字段将保持为空。

0 投票
1 回答
184 浏览

java - 我在“com/google/type/LatLng”和“com/google/protobuf/GeneratedMessage”之间存在类型不匹配,不知道为什么

我正在尝试从 Long 类型甚至 Integer 获取 Value 类类型(来自 google.datastore.v1),但似乎无法这样做。

这是似乎不情愿的代码部分

运行时,此代码生成以下错误:

我似乎无法弄清楚为什么会产生这个错误以及我必须做些什么来修复它,欢迎任何帮助