Protobuf中的"oneof"功能不起作用。

9
我有一个示例的protobuf消息:
message testMessage{    
    oneof oneOfTest{
        string test2 = 2;
        int32 test3 = 3;   
    } 
}

但它无法编译,提示如下:
[ERROR] protoc failed error: Expected "required", "optional", or "repeated".
test.proto: Missing field number.

根据行号,它在寻找"oneof"之前的必需/可选/重复关键字,并且在"oneOfTest"后面抱怨缺少字段编号。这不是使用oneof的正确方式吗?我正在使用Protobuf的java编译器。


你尝试在建议应该有一个关键字的地方添加一个关键字了吗?然后会发生什么? - takendarkk
2
你是否在使用最新的协议缓冲编译器?oneof是在2.6版本中添加的,该版本似乎是上周一发布的。 - Louis Wasserman
@LouisWasserman,就是这样,谢谢!我没有意识到oneof功能是新的。如果你想把你的评论写成问题,我可以接受它作为答案。 - yellavon
1个回答

12

确保您使用的是最新版本的协议缓冲区编译器:oneof语法仅在最近发布的最新版本中添加。


1
如果您使用的是2.6之前的protoc版本,它会给出一个误导性的错误提示,要求您在"oneof"前面添加"required"或"optional"。如果您这样做了,然后切换到2.6 protoc,直到您删除"required"或"optional",它才能理解您正在做什么。 - Chris Jones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接