【发布时间】:2013-04-09 17:15:13
【问题描述】:
我正在尝试使用 protobuf 序列化结构。经过数小时试图找出我做错了什么后,我决定测试谷歌的示例,但效果不佳
我有以下来自 google (https://developers.google.com/protocol-buffers/docs/javatutorial) 的协议:
package tutorial;
option java_package = "com.example.tutorial";
option java_outer_classname = "AddressBookProtos";
message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;
repeated PhoneNumber phone = 4;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
}
message AddressBook {
repeated Person person = 1;
}
我正在尝试将其序列化为:
Person john = Person.newBuilder()
.setId(1234)
.setName("John Doe")
.setEmail("jdoe@example.com")
.addPhone(
Person.PhoneNumber.newBuilder()
.setNumber("555-4321")
.setType(Person.PhoneType.HOME))
.build();
byte[] 序列化 = john.toByteArray();
我得到“java.lang.UnsupportedOperationException:这应该被子类覆盖。”
谢谢;
【问题讨论】:
-
你能发布完整的堆栈跟踪吗?
-
您是否使用了与您正在使用的库匹配的
protoc版本? -
我使用了不同版本的 protobuf...非常感谢 Marc!
标签: java serialization protocol-buffers