【发布时间】:2017-01-28 14:11:12
【问题描述】:
一直在尝试安装 Protocol Buffers 编译器和 java 运行时安装,但在编译 java 类时出现错误。我下载了:
protoc-3.2.0rc2-linux-x86_64.zip(虽然说版本是2.6.1)
protobuf-java-3.2.0rc2.zip
文件结构如下:
- 项目/
- protobuf_dir/
- protobuf 文件/目录,包括 src/ 和 java/
- 源/
- 协议(二进制)
- 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);
关于如何解决问题的任何想法?不明白为什么它不应该编译。尝试在 Google 的页面上查看,但没有任何结果。
虽然我以前从未真正使用过像 Github 中的 protobuf 这样的库,但我知道我听起来有点笨,所以这对我来说是全新的!
编辑:大家好,这个问题已经用完全相同的文件结构解决了。我卸载了 protoc2.6.1,设置了我的 $JAVA_HOME 和 $PATH 变量(您也应该存储它们而不是每次都必须导出它们),安装 maven(正确)。
一切都好!一切编译顺利。感谢回复者!
【问题讨论】:
-
descriptor.proto 是什么样的?
-
@JoeC 不太确定您到底要什么。该文件可在此链接 (github.com/google/protobuf/blob/master/src/google/protobuf/…) 中找到,如果这意味着什么,则语法字段设置为“proto2”。
标签: java installation protocol-buffers