我正在使用两组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版本之间是否有任何保证?
答案 0 :(得分:2)
Protobuf for Java支持针对较新的运行时库运行较旧的生成代码,并混合来自不同编译器版本的生成代码。但是,此支持仅从3.0版开始存在(请参阅更改日志条目here)。因此,在您的情况下,如果可能的话,最好升级到3.0(或更高版本)并使用3.0 protoc
重新生成代码,但在一次性步骤之后,您将不再需要担心重新生成代码当你更新protobuf库版本时。