协议消息终端组标记与预期标记不匹配

2022-09-01 21:08:53

我不断得到以下堆栈跟踪,不确定它是什么意思。

Caused by: com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag.
    at com.google.protobuf.InvalidProtocolBufferException.invalidEndTag(InvalidProtocolBufferException.java:73)
    at com.google.protobuf.CodedInputStream.checkLastTagWas(CodedInputStream.java:124)
    at com.google.protobuf.AbstractMessageLite$Builder.mergeFrom(AbstractMessageLite.java:189)
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:732)
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:238)
    at com.google.protobuf.AbstractMessageLite$Builder.mergeFrom(AbstractMessageLite.java:178)
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:724)
  • “协议消息终端组标记与预期标记不匹配”是什么意思?
  • 什么是“消息结束组标记”?
  • 这是否记录在某处?

答案 1

protobuf 中的组被写成开始/结束数字对 - 有点像需要一个 ,但格式不同。从本质上讲,它是在抱怨它找到了一个(只是:xml只是一个隐喻)。详细信息在编码规范中,但长短是以下之一:<foo></foo></bar>

  • 数据本质上是损坏的(通过故障编码器损坏),或者
  • 读取时数据损坏,或
  • 数据很好,你给了一个错误的解码器

如果我不得不猜测,数据在传输过程中已经损坏 - 因为这是如此可怕的普遍现象


答案 2

推荐