protobuf 2.3.0 和 2.6.0 之间的兼容性
Compatibility between protobuf 2.3.0 and 2.6.0
我正在使用两组 protobuf 绑定,A 和 B。
A 已使用协议版本 2.3.0 生成,B 已使用协议版本 2.6.0 生成。在我使用上述两种方法的应用程序中,我使用的是 protobuf-java
库版本 2.6.0.
使用此设置,我在与 A protobuf 绑定交互时遇到以下类型的错误:
java.lang.RuntimeException: Generated message class "A$Builder" missing method "getAMessageBuilder"
关于 protobuf 模式之间的向后兼容性有很多帖子和问题,但是库版本呢? protobuf 版本之间有任何保证吗?
Java 的 Protobuf 支持 运行 针对较新的运行时库生成的旧代码,并且还混合了来自不同编译器版本的生成代码。但是,此支持仅从 3.0 版开始存在(请参阅更改日志条目 here)。因此,在您的情况下,最好尽可能升级到 3.0(或更高版本)并使用 3.0 protoc
重新生成您的代码,但在该一次性步骤之后您将不再需要担心重新生成您的代码当您更新 protobuf 库版本时。
我正在使用两组 protobuf 绑定,A 和 B。
A 已使用协议版本 2.3.0 生成,B 已使用协议版本 2.6.0 生成。在我使用上述两种方法的应用程序中,我使用的是 protobuf-java
库版本 2.6.0.
使用此设置,我在与 A protobuf 绑定交互时遇到以下类型的错误:
java.lang.RuntimeException: Generated message class "A$Builder" missing method "getAMessageBuilder"
关于 protobuf 模式之间的向后兼容性有很多帖子和问题,但是库版本呢? protobuf 版本之间有任何保证吗?
Java 的 Protobuf 支持 运行 针对较新的运行时库生成的旧代码,并且还混合了来自不同编译器版本的生成代码。但是,此支持仅从 3.0 版开始存在(请参阅更改日志条目 here)。因此,在您的情况下,最好尽可能升级到 3.0(或更高版本)并使用 3.0 protoc
重新生成您的代码,但在该一次性步骤之后您将不再需要担心重新生成您的代码当您更新 protobuf 库版本时。