使用 protobuf 2.4.1 验证错误

VerifyError using protobuf 2.4.1

尝试为给定的 protobuf 创建 newBuilder() 对象时出现以下错误 class。在 classpath.

中有 protobuf-java-2.4.1.jar

同样在服务器端工作,但在客户端失败。

java.lang.VerifyError:错误的 return 类型
异常详细信息:
  地点:
    packagename.QuerySpecProtos$QuerySpec$Builder.clone()Lcom/google/protobuf/AbstractMessageLite$Builder; @4:一个return
  原因:
    类型 'packagename.QuerySpecProtos$QuerySpec$Builder'(当前帧,堆栈 [0])不可分配给 'com/google/protobuf/AbstractMessageLite$Builder'(来自方法签名)
  当前帧:
    bci: @4
    标志:{}
    当地人:{ 'packagename.QuerySpecProtos$QuerySpec$Builder' }
    堆栈:{'packagename.QuerySpecProtos$QuerySpec$Builder'}
  字节码:
    0000000: 2ab6 0062 b0

看起来版本不匹配。您需要确保:

  1. 您编译时使用的jar版本与运行.
  2. 您使用相同版本的protoc来匹配jar。