InvalidProtocolBufferException:协议消息end-group标记与期望标记不匹配

时间:2014-09-04 17:18:35

标签: java protocol-buffers

我试图写一个文件然后再读一遍。

我的写代码:

ObjectOutputStream oos = null;
FileOutputStream fout = null;
try
{
    Object myObject;
    fout = new FileOutputStream(new File("C:\\Foo","Bar.log"));

    oos = new ObjectOutputStream(fout);
    oos.writeObject(myObject);

} catch (Exception ex) {
    ex.printStackTrace();
} finally {
    try {
        oos.close();
        fout.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

我的读者:

FileInputStream input;
try {
    input = new FileInputStream(new File("C:\\Foo\\Bar.log"));
    MyFile parsedObject = MyFileFormat.MyFile.parseFrom(input);

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

但是我在解析器上遇到了这个异常:

com.google.protobuf.InvalidProtocolBufferException: Protocol message end-group tag did not match expected tag.
    at com.google.protobuf.InvalidProtocolBufferException.invalidEndTag(InvalidProtocolBufferException.java:94)

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您使用java的ObjectOutputStream来序列化您的对象,但是使用了一些涉及guava的自定义反序列化? 如果您使用ObjectOutputStream来撰写内容,则应使用ObjectInputStream进行阅读。此外,你的例子没有任何意义。您永远不会在序列化片段中初始化myObject变量,此代码将无法编译。