Protobuf基于java的官方示例演示

31 篇文章 0 订阅
21 篇文章 0 订阅

Protobuf基于java的简单示例

         先安装Protobuf,并编译protobuf提供的开发,得到protobuf基于java 的类库protobuf-2.5.0.jar,这两部笔者的上一篇博文中有详细的介绍以及资源下载地址,如果不有不太清楚的可以访问笔者的上一篇博文《初识protocol buffer》。下面就直接使用Protobuf 来运行官方提供的简单的示例。

一、具体示例步骤

         本文中就直接使用Protobuf本身自带的一些示例,这个示例在 protobuf-2.5.0\examples 目录中。这个示例会用到这个目录中的addressbook.proto、AddPerson.java 和 ListPerson.java 文件。下面一步一步来运行这些示例。

         1.首先把前面编译生成的 protobuf-2.5.0.jar复制到 protobuf-2.5.0\examples 目录中,便于引用。

         2.接着使用Protobuf编译器编译addressbook.proto 文件。打开命令行窗口,并定位到protobuf-2.5.0\examples 目录中,运行命令

                   protoc--java_out=. addressbook.proto

执行这个命令后会在protobuf-2.5.0\examples目录下生成一个.java文件,为一个java类文件com.example.tutorial.AddressBookProtos.java。

         3.生成了 java 类之后就是编译并运行这个示例。在命令行中执行命令

javac -d . -classpath .;protobuf-2.5.0.jarAddPerson.java ListPeople.java com\example\tutorial\AddressBookProtos.java

         4.再运行 AddPerson,在命令中执行命令

                   java-cp .;protobuf-2.5.0.jar AddPerson addr.dat

         5.然后按照提示输入相应的信息,全部效果如下图所示


注意:这里面的命令中,其中protobuf-2.5.0.jar为你编译好的java类库jar的文件名,运行这些命令时,需要电脑安装与jar库同版本的protobuf,同时也需要电脑上已经装有jdk,具体jdk的安装这里就不多说了。具体出现相关错误可以参考后面的错误说明

         6.运行上面程序后会在当前目录中创建一个数据文件 addr.dat 保存 protocol buffer 生成的数据。运行程序 ListPeople 则可以读取 addr.dat 文件中的数据。执行命令如下

java -cp .;protobuf-2.5.0.jar ListPeopleaddr.dat

可以看到如下信息:


二、使用到的命令

         使用到的命令表,命令具体后续详细介绍,这里只提出需要注意的部分说明:

cd C:\server\protobuf-2.5.0\examples

将cmd工作空间定位到examples目录中

protoc --java_out=. addressbook.proto

通过protobuf编译.proto文件,

其中addressbook.proto为需要编译的文件名

将生成对应的java类(具体该类介绍,后续博文中再进行介绍)

javac -d . -classpath .;protobuf-2.5.0.jar AddPerson.java ListPeople.java com\example\tutorial\AddressBookProtos.java

 

编译java文件生成class文件

运行该命令前需要在example中导入protobuf基于java的类库(即上一部中生成的jar包),其中protobuf-2.5.0.jar为该类库的名字

java -cp .;protobuf-2.5.0.jar AddPerson addr.dat

运行AddPerson,生成addr.dat文件,

java -cp .;protobuf-2.5.0.jar ListPeople addr.dat

运行ListPeople,读取addr.dat文件

三、相关错误说明

         1.一旦出现“‘protoc’不是内部或外部命令...”或者“‘javac’ 不是内部或外部命令...”等相关错,说明protoc或jdk没有安装成功。

         2.如出现下图中错误,则有可能是cmd工作空间没有定位到protobuf-2.5.0\examples目录,或者examples目录中没有addressbook.proto文件,抑或执行命令中将.proto文件名书写错误


3.如果出现下图错误,则可能是因为未将protobuf基于java的类库(protobuf-2.5.0.jar)文件导入到examples目录下


4如果出现下图错误,则可能是因为你导入的protobuf基于java的类库文件(protobuf-x.x.x.jar)版本与你安装的protobuf编译器(proto.exe)版本不同。


5如果出现关于文件找不到等相关错误,请检查你命令的执行顺序以及命令中文件名的拼写等。

资源相关:

         一、本文参考资源

                 1.Protobuf简介和使用原理 http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/

                 2.Protobuf使用入门 http://blog.sina.com.cn/s/blog_492dbb6b0100qorb.html

         二、本文使用到的资源(个人云盘)

                   1protobuf-2.5.0.tar.gz + protobuf-2.5.0.jar + proto.exe下载:

                            http://pan.baidu.com/s/1sjuxdFJ

                   2其他protobuf相关资源下载:

                            http://pan.baidu.com/s/1c0I4cU0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Protobuf是一种用于序列化和反序列化数据的方法,它比其他方法如XML和JSON更高效。在Java使用Protobuf需要进行环境配置和编译器的下载。 以下是Java Protobuf的介绍和演示: 1. 环境配置: - 下载编译器:在官方网站上下载Protobuf编译器,可以选择适合您操作系统的版本。 - 解压缩下载的文件:将下载的文件解压缩到您选择的目录中。 - 将编译器添加到系统路径:将解压缩后的编译器路径添加到系统的PATH环境变量中。 2. 编写一个简单的.proto文件: - 创建一个新的文件,命名为example.proto。 - 在文件中定义消息类型和字段。 - 例如,下面是一个简单的.proto文件示例: ```protobuf syntax = "proto3"; package com.example; message Person { string name = 1; int32 age = 2; } ``` 3. 使用编译器生成Java类: - 打开命令行终端,进入.proto文件所在的目录。 - 运行以下命令来生成Java类: ```shell protoc --java_out=. example.proto ``` - 这将在当前目录下生成一个名为example.pb.javaJava类文件。 4. 在Java代码中使用生成的类: - 创建一个Java类,例如Main.java。 - 在类中使用生成的类来序列化和反序列化数据。 - 例如,下面是一个简单Java代码示例: ```java import com.example.Person; public class Main { public static void main(String[] args) { // 创建一个Person对象 Person person = Person.newBuilder() .setName("John") .setAge(25) .build(); // 将Person对象序列化为字节数组 byte[] serializedPerson = person.toByteArray(); // 将字节数组反序列化为Person对象 Person deserializedPerson = Person.parseFrom(serializedPerson); // 打印反序列化后的Person对象 System.out.println(deserializedPerson); } } ``` 以上是Java Protobuf的介绍和演示

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值