protoc生成无效的java代码

时间:2018-01-26 08:47:31

标签: java protocol-buffers

我一直在使用protobuf来生成内部后端消息但是当我搬到新的笔记本电脑并再次设置protoc时,它似乎不再生成有效的java代码了。

我正在使用最新的Ubuntu 16.04并已下载最新的protoc

$ protoc --version
libprotoc 3.5.1

使用

构建它,没有错误或警告
protoc --java_out=<javapath> --python_out=<pythonpath> messages.proto

Eclipse / maven显示的消息是:

The method parseUnknownFieldProto3(CodedInputStream, UnknownFieldSet.Builder, ExtensionRegistryLite, int) is undefined for the type MessageA.Request    Messages.java   ...path, line etc...

snip, more of the same for other messages

Messages.Shutdown   Messages.java   ...path...
The method setUnknownFieldsProto3(UnknownFieldSet) is undefined for the type GeneratedMessageV3.Builder<Messages.Request.Builder>   Messages.java   ...path, line etc...

snip, more of the same

如果我手动将parseUnknownFieldProtoc3重命名为parseUnknownField并且对于SetUnknownFields相同,则错误会消失,但这感觉就像是错误的解决方案。

我错过了什么?

1 个答案:

答案 0 :(得分:3)

听起来你正在使用不匹配的生成代码和库代码。如果您使用的是protoc 3.5.1,则需要3.5.1中的库代码;或者,如果您使用的是库3.3.0 - 则需要3.3.0中的protoc

所有版本均为here3.5.13.3.0