2011-03-04 11 views
1

我试过下面的编码和解码代码。解析字节[]到协议缓冲区消息实例时的RuntimeException! (反序列化)

但是,从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) 
+0

你能展示完整的异常堆栈吗? – bluefoot 2011-03-04 15:51:39

+0

这是我可以看到的完整堆栈。 – 2011-03-04 16:01:42

回答

1

你建立协议的任何机会缓冲区自己吗?或者也许Comment本身没有正确编译?

这看起来像是当编译出现错误时由Eclipse构建的代码引发的异常类型,但它仍然会生成类文件。它可以让你运行破损的代码,直到你到达实际的坏点,此时你会得到这样的异常。

+0

我刚刚定义了我的.proto文件,并使用protoc将其编译并将生成的类文件和库添加到我的源文件夹。我没有使用源代码编译协议缓冲区。希望我回答你的意思 – 2011-03-04 15:57:06

+0

我使用netbeans。 – 2011-03-04 15:57:55

+0

@Marcos:protoc只生成.java文件,然后您需要在Netbeans中进行编译。这些都为你编译没有任何问题吗?检查是否有编译错误/警告。 – 2011-03-04 16:11:23

相关问题