当前位置: 首页 > 知识库问答 >
问题:

用导致版本错误的maven插件生成协议缓冲区

陈飞
2023-03-14

我试图构建一些先前存在的Java代码,其中包括谷歌协议缓冲区在其传输层。我正在使用的插件在pom文件中包含了以下元素:

<plugin>
    <groupId>com.github.igor-petruk.protobuf</groupId>
    <artifactId>protobuf-maven-plugin</artifactId>
    <version>0.6.3</version>
    <executions>
        <execution>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

我已经安装了protobuf 2.4.1版,protoc可以通过命令行获得,我在pom中包含的protobuf-java版本也是来自com.google.protobuf组的2.4.1版本。正如我前面提到的,我必须使用这个技术堆栈,因为我正在使用现有的代码库,但是尽管有一个新版本的protobufs出来,但这不是我遇到的问题。

问题是,从protoc二进制文件生成的代码(由上面提到的maven插件调用)没有实现从maven导入到我的项目中的protobuf库中定义的父类的抽象函数。以下是错误:

[ERROR] <generated java class from protoc> is not abstract and does not override abstract method getParserForType() in com.google.protobuf.MessageLite

共有1个答案

李兴庆
2023-03-14

这听起来像是生成的java代码和protobuf jar库之间的不匹配。特别是,我认为java代码是用Protoc2.5.0生成的,您运行的是protobuf JAR的早期版本(2.4.1)。

您可以通过以下方式检查正在使用的protoc的版本

protoc --version

如果是2.5.0,则生成并重新安装Protoc2.4.1版

    null
 类似资料:
  • 我试图安装Caffe库,但我有一个编译问题,由于一个错误的原型版本安装在我的系统。 我在论坛上遵循了许多提议的方法,我认为在这篇帖子中讨论了最类似的问题。 在caffe.pb.h中控件是: 但是在我的系统标头(/usr/include/google/cript buf/stubs/Common. h)中: 命令protoc--version从终端返回libprotoc 3.2.0。 所以我安装了3

  • 我不小心安装了3.0.0版,我的大多数文件自然产生了大量错误。现在我想把它带回2.6.1。我已经下载了2.6.1并安装了,但是当我做时,它仍然显示,这是错误的。 有办法将版本设置为2.6.1还是有办法卸载3.0.0?

  • 我试着按照你的指示去做https://github.com/golang/protobuf和https://github.com/google/protobuf/releases安装协议缓冲区。在我将bin路径从下载文件夹添加到之后,我试图运行,但它显示 有没有办法判断我是否正确安装了protobuf? 谢谢

  • 问题内容: 我的一位同事提出了在运行时生成协议缓冲区类的想法。含义: 有C ++服务器应用程序和Java客户端应用程序通过TCP / IP通过协议缓冲区消息进行通信。 C ++应用程序在不同版本中可能具有不同的架构,并且不一定向后兼容 有与此服务器通信的Java应用程序,该应用程序应支持所有可能的服务器版本。 这个想法是服务器将协议缓冲区的定义作为初始握手的一部分发送,并且Java应用程序在运行时

  • 在阅读这个相当长的问题之前,我提出了一个bughttps://github.com/GoogleCloudPlatform/python-docs-samples/issues/1103. 原型包和名称解析的留档状态 您可以使用其他定义。通过导入原始文件。导入另一个。在proto的定义中,您可以在文件的顶部添加一条import语句。 我的依赖于annotations.proto将HTTP/JSON

  • 我试图在Python 3项目中使用Google协议缓冲区。然而,生成的python文件不想与google合作。protobuf库。尝试使用protobuf对象会导致NotImplementedError。 我的设置: Python 3.4.1 使用这些库时出现问题: https://pypi.python.org/pypi/protobuf-py3/2.5.1 python3-原型(https:/