protobuf 2.3.0和2.6.0之间的兼容性

时间:2016-11-02 10:03:19

标签: java protocol-buffers

我正在使用两组protobuf绑定,A和B.

已使用protoc版本 2.3.0 生成A,并且已使用protoc版本 2.6.0 生成B.在我使用上述两者的应用程序中,我使用的是protobuf-java库版本 2.6.0

使用此设置,我在与A protobuf绑定进行交互时会出现以下类型的错误:

java.lang.RuntimeException: Generated message class "A$Builder" missing method "getAMessageBuilder"

关于protobuf架构之间的向后兼容性有很多帖子和问题,但是库版本呢? protobuf版本之间是否有任何保证?

1 个答案:

答案 0 :(得分:2)

Protobuf for Java支持针对较新的运行时库运行较旧的生成代码,并混合来自不同编译器版本的生成代码。但是,此支持仅从3.0版开始存在(请参阅更改日志条目here)。因此,在您的情况下,如果可能的话,最好升级到3.0(或更高版本)并使用3.0 protoc重新生成代码,但在一次性步骤之后,您将不再需要担心重新生成代码当你更新protobuf库版本时。