2014-09-03 51 views
15

我正在使用Google Protobuf使用Java。 我寫如下語句'可選重複'與谷歌protobuf爲Java

optional repeated string users = 9; 

當我試圖編譯我收到了如下的錯誤

message.proto:39:57: Missing field number. 

所有我想要的是創建一個字符串數組。

任何人都可以幫助我解決它。

PS:如果我回避可選關鍵字則編譯但在Java中我得到了com.google.protobuf.ProtocolStringList

由於一類未找到錯誤提前

+3

'重複'已經是'可選' - 它是0或更多。 – user2357112 2014-09-03 06:33:28

回答

23

所有你需要的是:

repeated string users = 9; 

你不需要optional修飾符,它看起來像是令解析器感到困惑。 A repeated字段本質上是optional:你只是不加任何值

至於com.google.protobuf.ProtocolStringList:檢查您使用的.proto編譯器(protoc)的版本是否與您正在使用的庫版本完全匹配。

+2

謝謝你的回答。我的編譯器版本是2.6,我使用庫2.5。現在它正在工作。非常感謝你。 – Harikrishnan 2014-09-03 06:49:23

+0

@Harikrishnan有趣;你自己構建了2.6編譯器嗎?我認爲只有2.5下載? (我很好奇,因爲密切關注新'oneof'功能的發佈) – 2014-09-03 06:50:56

+1

我從https://protobuf.googlecode.com/svn/rc/protoc-2.6.0-win32.zip – Harikrishnan 2014-09-03 07:31:18

-2

生成的文件包含檢索計數的方法。例如 int getXXXCount(); 一個問題是,這種方法不適用於對應於protoc def的先前版本的生成文件。

+0

感謝您的提示 – Harikrishnan 2014-12-22 04:28:31