我遇到了Google Protocol Buffers的问题。使用protoc编译的java类在转换为字节数组时抛出异常。
以下是示例代码:
byte[] raw = pbCard.toByteArray();
// PbCard.Card is an instance of a protoc-generated class.
这会导致异常:
Exception in thread "main" java.lang.UnsupportedOperationException: This is supposed to be overridden by subclasses.
这种行为被许多人诊断为protoc版本的问题。当使用使用protoc生成的java类时2.5.0并包含一个java库2.5.0,将生成此异常。
链接:
http://code.google.com/p/protobuf/issues/detail?id=493
error with serialization with protobuf
http://comments.gmane.org/gmane.comp.lib.protocol-buffers.general/9588
但是,在我的情况下两者 protoc和java库都在版本2.5.0 。
eipifi@vaio:~$ protoc --version
libprotoc 2.5.0
包含的jar:
eipifi@vaio:~$ sha1sum protobuf-java-2.5.0.jar
a10732c76bfacdbd633a7eb0f7968b1059a65dfa protobuf-java-2.5.0.jar
我的机器上没有旧版本的protobufs。所有java类都是在这台机器上生成的,并没有从旧项目中移除。
我错过了什么?
感谢您的时间。