已嘗試安裝協議緩衝區編譯器和Java運行時安裝,但編譯java類時出現錯誤。我下載:安裝協議緩衝區時編譯錯誤
protoc-3.2.0rc2-linux-x86_64.zip(雖然它說的版本是2.6.1)
protobuf-java-3.2.0rc2.zip
文件結構如下所示:
- 項目/
- protobuf_dir/
- 的protobuf的文件/目錄,包括SRC /和java/
- SRC/
- protoc(二進制)
- protoc_dir /(其他的位和鮑勃從protoc zip文件)
- 的java/
- 核心/
- 精簡版/
- ...
- protobuf_dir/
因此,假如這一切很好,我輸入:
protoc --java_out=src/main/java -I../src \../src/google/protobuf/descriptor.proto
所以protoc似乎工作正常。但後來我一直得到錯誤,像這樣的,直到我評論出來(不知道這是一個問題嗎?):
google/protobuf/descriptor.proto:443:3: Expected "required", "optional", or "repeated".
google/protobuf/descriptor.proto:443:12: Expected field name.
google/protobuf/descriptor.proto:541:3: Expected "required", "optional", or "repeated".
google/protobuf/descriptor.proto:541:12: Expected field name.
但當我嘗試編譯所有的java類,我剛得到一個錯誤說:
Descriptors.java:1175: error: cannot find symbol
return FieldDescriptorProto.Type.forNumber(ordinal() + 1);
有關如何解決問題的任何想法?不明白爲什麼它不應該編譯。嘗試看谷歌的網頁,但沒有出現在這一點上。
意識到我聽起來有點無知,儘管我從來沒有真正使用過像Github的protobuf這樣的庫,所以這對我來說都是新的!
編輯:大家好,這個問題已解決完全相同的文件結構。我卸載了protoc2.6.1,設置了我的$ JAVA_HOME和$ PATH變量(您應該將它們存儲起來,而不必每次都導出它們),安裝maven(正確)。
一切都很好!一切編譯順利。感謝響應者!
descriptor.proto是什麼樣子的? –
@JoeC不太清楚你要求的是什麼。該文件可以在此鏈接中找到(https://github.com/google/protobuf/blob/master/src/google/protobuf/descriptor.proto),如果這意味着什麼,語法字段將設置爲「proto2」。 –