2014-09-03 14 views
15

Sto utilizzando Google Protobuf utilizzando java. ho scritto una dichiarazione come"facoltativo ripetuto" con google protobuf per Java

optional repeated string users = 9; 

Quando ho provato a compilare sto ottenendo un errore come

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

Tutto quello che volevo era quello di creare un array di stringhe.

Qualcuno può aiutarmi a risolverlo.

PS: Se ho evitato parola chiave opzionale, allora è la compilazione, ma in Java sto ottenendo una classe non trovato errore per com.google.protobuf.ProtocolStringList

Grazie in anticipo

+3

'repeat' è già' opzionale' - è 0 o più. – user2357112

risposta

23

Tutto ciò che serve è:

repeated string users = 9; 

Non è necessario il modificatore optional e sembra che confonda il parser. Un campo repeated è intrinsecamente optional: è semplicemente non aggiungere alcun valore.

Come per com.google.protobuf.ProtocolStringList: verificare che la versione del compilatore .proto (protoc) in uso corrisponda esattamente alla versione di libreria utilizzata.

+2

Grazie per la risposta. La mia versione del compilatore era 2.6 e stavo usando la libreria 2.5. Ora sta funzionando. Grazie mille. – Harikrishnan

+0

@Harikrishnan interessante; hai costruito tu stesso il compilatore 2.6? Pensavo ci fossero solo download per 2.5? (Sono curioso di tenere d'occhio il rilascio della nuova funzione 'oneof') –

+1

L'ho preso da https://protobuf.googlecode.com/svn/rc/protoc-2.6.0-win32.zip – Harikrishnan

-2

Il file generato contiene il metodo per recuperare il conteggio. per esempio. int getXXXCount(); Un problema è che tale metodo non sarebbe disponibile per il file generato corrispondente alle precedenti versioni del def protoc.

+0

Grazie per il suggerimento – Harikrishnan

Problemi correlati