无法使用协议缓冲区 3.1.0 进行编译
Cannot compile with protocol buffers 3.1.0
I downloaded/installed protocol buffers 3.1.0 并使用 protoc 编译生成 .java class 的 .proto 文件我.
有了这个改变,一切都works/compiles。
然后我用最新版本替换了 avro jar 并尝试再次编译我的项目,但没有运气,它抱怨这个错误:
# Compile: pregen/media.proto
pregen/media.proto/serializers/protobuf/media/MediaContentHolder.java:828: error: cannot find symbol
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
^
symbol: class OneofDescriptor
location: class Descriptors
pregen/media.proto/serializers/protobuf/media/MediaContentHolder.java:2669: error: cannot find symbol
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
^
symbol: class OneofDescriptor
location: class Descriptors
pregen/media.proto/serializers/protobuf/media/MediaContentHolder.java:4131: error: cannot find symbol
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
^
symbol: class OneofDescriptor
location: class Descriptors
3 errors
我做了很多 search/research 仍然没有运气,还看了这个最相关的 post: Problems using protobufs with java and scala
然后我将生成的 .java 文件与 protobuf.3.1.0.jar 一起编译到一个新的 jar 中,并将其放在我的 lib/ 下,但该项目仍然无法编译。
请问关于如何解决这个问题的任何帮助?
(我也在那里使用开源 project to benchmark Java serialzation performance, and I've posted a more detailed question/issue。)
那个开源项目的一位作者帮我解决了issue,把解决方案也复制到这里:
“问题是 avro-tools-1.8.1.jar 捆绑了一些 Protobuf
class 个文件(呃)。捆绑的 class 文件与这些文件不兼容
我们生成的 Protobuf 代码依赖于。
我们对 class 路径上的内容非常快速和松散;我们只包括
"lib/*.jar"。在某些情况下更精确地依赖依赖会很好
点.
但作为快速修复,我将 avro-tools-1.8.1.jar 放在 "lib/extra/" 中,所以它不会
默认情况下被拾起。 Makefile 现在特别引用了
JAR 只有在我们需要的时候才会运行 Avro 代码生成器。"
谢谢。
I downloaded/installed protocol buffers 3.1.0 并使用 protoc 编译生成 .java class 的 .proto 文件我.
有了这个改变,一切都works/compiles。 然后我用最新版本替换了 avro jar 并尝试再次编译我的项目,但没有运气,它抱怨这个错误:
# Compile: pregen/media.proto
pregen/media.proto/serializers/protobuf/media/MediaContentHolder.java:828: error: cannot find symbol
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
^
symbol: class OneofDescriptor
location: class Descriptors
pregen/media.proto/serializers/protobuf/media/MediaContentHolder.java:2669: error: cannot find symbol
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
^
symbol: class OneofDescriptor
location: class Descriptors
pregen/media.proto/serializers/protobuf/media/MediaContentHolder.java:4131: error: cannot find symbol
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
^
symbol: class OneofDescriptor
location: class Descriptors
3 errors
我做了很多 search/research 仍然没有运气,还看了这个最相关的 post: Problems using protobufs with java and scala 然后我将生成的 .java 文件与 protobuf.3.1.0.jar 一起编译到一个新的 jar 中,并将其放在我的 lib/ 下,但该项目仍然无法编译。
请问关于如何解决这个问题的任何帮助?
(我也在那里使用开源 project to benchmark Java serialzation performance, and I've posted a more detailed question/issue。)
那个开源项目的一位作者帮我解决了issue,把解决方案也复制到这里:
“问题是 avro-tools-1.8.1.jar 捆绑了一些 Protobuf class 个文件(呃)。捆绑的 class 文件与这些文件不兼容 我们生成的 Protobuf 代码依赖于。
我们对 class 路径上的内容非常快速和松散;我们只包括 "lib/*.jar"。在某些情况下更精确地依赖依赖会很好 点.
但作为快速修复,我将 avro-tools-1.8.1.jar 放在 "lib/extra/" 中,所以它不会 默认情况下被拾起。 Makefile 现在特别引用了 JAR 只有在我们需要的时候才会运行 Avro 代码生成器。"
谢谢。