协议产生无效的Java代码

dut*_*utt 5 java protocol-buffers

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

我在最新的Ubuntu 16.04,并下载了最新protoc

$ protoc --version
libprotoc 3.5.1
Run Code Online (Sandbox Code Playgroud)

毫无错误或警告地构建

protoc --java_out=<javapath> --python_out=<pythonpath> messages.proto
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

如果我手动重命名parseUnknownFieldProtoc3,以parseUnknownField与同为SetUnknownFields错误消失,但像错误的解决感觉。

我想念什么?

Mar*_*ell 5

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

所有版本都在这里,有3.5.13.3.0