将byte []解析回协议缓冲区消息实例时出现RuntimeException! (反序列化)

时间:2011-03-04 15:48:43

标签: java protocol-buffers

我尝试使用代码进行编码和解码。

然而,

从byte []解码失败。

代码: -

public static void test(){

    Comment comment = Comment.newBuilder()
            .setCommentBody("This is 1st comment")
            .build();
    byte[] bytes = comment.toByteArray();

    try {
        Comment c = Comment.parseFrom(bytes);
    }
    catch (InvalidProtocolBufferException ex) {
        Logger.getLogger(testing.class.getName()).log(Level.SEVERE, null, ex);
    }

异常详情: -

    Exception in thread "main" java.lang.RuntimeException: Uncompilable source code
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java)
    at com.google.protobuf.AbstractMessageLite$Builder.mergeFrom(AbstractMessageLite.java:153)
    at com.google.protobuf.AbstractMessage$Builder.mergeFrom(AbstractMessage.java:709)
    at paratha.serializers.protocolbuffers.CommentProto$Comment.parseFrom(CommentProto.java:186)

1 个答案:

答案 0 :(得分:1)

您是否自己构建协议缓冲区?或者Comment本身可能没有正确编译?

这看起来像是在编译出错时由Eclipse构建的代码引发的异常,但无论如何它都构建了类文件。它允许你运行损坏的代码,直到你到达实际的损坏位,此时你会得到这样的异常。