Были попытки установить компилятор протоколов буферов и установку времени 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 архива)
- 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);
Любые идеи о том, как решить проблему? Не могу понять, почему он не должен компилироваться. Попытался посмотреть на страницу Google, но на это ничего не вышло.
Зная, что я звучу немного невежественно, хотя я никогда не использовал такие библиотеки, как protobuf от Github, прежде чем это все новое для меня!
EDIT: Привет всем, эта проблема была решена с точно такой же файловой структурой. Я удалил protoc2.6.1, установил переменные $ JAVA_HOME и $ PATH (вы должны их хранить, а не экспортировать их каждый раз), установленный maven (правильно).
Все хорошо! Все составлено без сучка и задоринки. Спасибо ответчику!
Как выглядит дескриптор.proto? –
@JoeC не совсем уверен, что вы просите точно. Файл можно найти по этой ссылке (https://github.com/google/protobuf/blob/master/src/google/protobuf/descriptor.proto), а для поля синтаксиса установлено значение «proto2», если это что-то значит. –