Protobuf基于java的官方示例演示

时间:2022-06-29 20:51:25

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基于java的官方示例演示

注意:这里面的命令中,其中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

可以看到如下信息:

Protobuf基于java的官方示例演示

二、使用到的命令

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

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文件名书写错误

Protobuf基于java的官方示例演示

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

Protobuf基于java的官方示例演示

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

Protobuf基于java的官方示例演示

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