方法一:
首先下载2.4.1的安装包 http://code.google.com/p/protobuf/downloads/ 安装命令示例如下:
- tar -xzf protobuf-2.1.0.tar.gz
- cd protobuf-2.1.0
- ./configure --prefix=$INSTALL_DIR
- make
- make check
- make install
tar -xzf protobuf-2.1.0.tar.gz
cd protobuf-2.1.0
./configure --prefix=$INSTALL_DIR
make
make check
make install
1)编写一个Protocol文件,保存为 addressbook.proto
- 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;
- enum PhoneType {
- MOBILE = 0;
- HOME = 1;
- WORK = 2;
- }
- message PhoneNumber {
- required string number = 1;
- optional PhoneType type = 2 [default = HOME];
- }
- repeated PhoneNumber phone = 4;
- }
- message AddressBook {
- repeated Person person = 1;
- }
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;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phone = 4;
}
message AddressBook {
repeated Person person = 1;
}
2)执行如下命令,$SRC_DIR为address.proto文件的目录,$DST_DIR为生成java文件的目录
protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/addressbook.proto
就可以生成可用的Java类文件了
3)Protocol Buffer的Maven配置
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>2.4.1</version>
</dependency>
4)代码使用
Java代码构建Address对象:
AddressBookProtos.Person person = AddressBookProtos.Person.newBuilder().setId(2234).setName("Benson Peng").build();
AddressBookProtos.AddressBook address = AddressBookProtos.AddressBook.newBuilder().addPerson(person).build();
参考文献:
1)Google官方教程 http://code.google.com/intl/zh-CN/apis/protocolbuffers/docs/javatutorial.html
2)Google Protocol Buffer的原理和使用 http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/?ca=drs-tp4608
方法二:
.http://code.google.com/p/protobuf/downloads/list ,选择其中的win版本下载
2.下载一个protobuf-java-2.4.1.jar文件(注意,要与你刚才下的proto.exe版本相同,否则可能出现编译通不过现象)
3.在proto.exe同级目录,编写一个msg.proto文件:
- package Feinno.Practice.Learn;
- option java_package = "Feinno.Practice.Learn";
- option java_outer_classname = "ProtoBufferPractice";
- message msgInfo {
- required int32 ID = 1;
- required int64 GoodID = 2;
- required string Url = 3;
- required string Guid = 4;
- required string Type = 5;
- required int32 Order = 6;
- }
package Feinno.Practice.Learn;
option java_package = "Feinno.Practice.Learn";
option java_outer_classname = "ProtoBufferPractice";
message msgInfo {
required int32 ID = 1;
required int64 GoodID = 2;
required string Url = 3;
required string Guid = 4;
required string Type = 5;
required int32 Order = 6;
}
4.使用如下命令编译这个文件:
5.将生成的ProtoBufferPractice.java文件引入eclipse
6.把下载的protobuf-java-2.4.1.jar也引入工程
7.使用方法(序列化):
- ProtoBufferPractice.msgInfo.Builder builder=ProtoBufferPractice.msgInfo.newBuilder();
- builder.setGoodID(100);
- builder.setGuid("11111-23222-3333-444");
- builder.setOrder(0);
- builder.setType("ITEM");
- builder.setID(10);
- builder.setUrl("http://xxx.jpg");
- ProtoBufferPractice.msgInfo info=builder.build();
- byte[] result=info.toByteArray() ;
ProtoBufferPractice.msgInfo.Builder builder=ProtoBufferPractice.msgInfo.newBuilder();
builder.setGoodID(100);
builder.setGuid("11111-23222-3333-444");
builder.setOrder(0);
builder.setType("ITEM");
builder.setID(10);
builder.setUrl("http://xxx.jpg");
ProtoBufferPractice.msgInfo info=builder.build();
byte[] result=info.toByteArray() ;
8.反序列化:
- try{
- ProtoBufferPractice.msgInfo msg = ProtoBufferPractice.msgInfo.parseFrom(result);
- System.out.println(msg);
- }
- catch(Exception ex){
- System.out.println(ex.getMessage());
- }