2014-09-02 5 views
5

मैं एक इस नमूने Protobuf संदेश है:Protobuf "oneof" कार्यक्षमता काम नहीं कर रहा

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" से पहले आवश्यक/वैकल्पिक/दोहराया गया keyworkd के लिए और यह "oneOfTest" के बाद अनुपलब्ध फ़ील्ड नंबर की शिकायत कर रहा है। क्या यह एक का उपयोग करने का सही तरीका नहीं है? मैं प्रोटोबफ के लिए जावा कंपाइलर का उपयोग कर रहा हूं।

+0

क्या आपने उन कीवर्ड में से एक को जोड़ने का प्रयास किया है जहां यह कहता है कि आपके पास एक होना चाहिए? फिर क्या होता है? – csmckelvey

+2

क्या आप सबसे हालिया प्रोटोकॉल बफर कंपाइलर का उपयोग कर रहे हैं? 2.6 में 'वनॉफ' जोड़ा गया था, जो पिछले सोमवार को जारी किया गया प्रतीत होता है। –

+0

@ लुइस वासरमैन यह था, धन्यवाद! मुझे एहसास नहीं हुआ कि 'वन' सुविधा नई थी। यदि आप अपनी टिप्पणी को प्रश्न के रूप में लिखना चाहते हैं, तो मैं इसे उत्तर के रूप में स्वीकार कर सकता हूं। – yellavon

उत्तर

9

सुनिश्चित करें कि आप प्रोटोकॉल बफर कंपाइलर का नवीनतम संस्करण उपयोग कर रहे हैं: oneof सिंटैक्स पिछले सोमवार को जारी किए गए सबसे हालिया संस्करण में जोड़ा गया था।

+0

और यदि आप प्री-2.6 प्रोटोक का उपयोग कर रहे हैं, तो यह एक भ्रामक त्रुटि संदेश देता है जो आपको "एक" के सामने "आवश्यक" या "वैकल्पिक" जोड़ने के लिए प्रेरित करता है। यदि आप ऐसा करते हैं, तो 2.6 प्रोटोक पर स्विच करें, यह समझ में नहीं आता कि आप "आवश्यक" या "वैकल्पिक" को हटाए जाने तक क्या कर रहे हैं। –

संबंधित मुद्दे