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

Mik*_*der 17 java protocol-buffers

我不断得到以下堆栈跟踪,我不确定它的含义.

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)
Run Code Online (Sandbox Code Playgroud)
  • "协议消息端组标记与预期标记不匹配".意思?
  • 什么是"消息端组标签"?
  • 这是在某处记录的吗?

Mar*_*ell 15

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

  • 数据本身就是腐败的(或者由于编码器故障造成的损坏),或者
  • 阅读时数据变得腐败,或
  • 数据很好,你给了一个错误的解码器

如果我不得不猜测,数据在运输途中已经损坏 - 因为这是非常可怕的