Protobuf 的安装使用总结

简介: Protobuf 的安装使用总结

ProtoBuf的官方下载包并不包含jar文件,需要用户自己来自行编译。

下载

protobuf-2.5.0.tar.gz

(ProtoBuf的源文件(包含了C++/Java/Python)的源文件)

protoc-2.5.0-win32.zip

(已经编译过的用于Windows平台的protoc命令,该命令用于将.proto文件转化为Java或C++源文件)

注意,以上两个文件的版本必须匹配一致

分别解析这两个文件,你可以在protoc-2.4.1-win32.zip解压后的文件中找到一个protoc.exe文件,将其copy到protobuf-2.5.0/src目录下,然后进入protobuf-2.5.0/java

mvn install

如果没有安装maven的话,可以参考这篇文章:

Linux/Windows下安装Maven

编译完成后可以在protobuf-2.5.0/java/target目录中找到protobuf-2.5.0.jar文件

如果要生成plugin.java文件在\java\target\generated-sources\com\google\protobuf\compiler\PluginProtos.java,则需要修改\java\pom.xml里添加这样一行

<tasks>
                <mkdir dir="target/generated-sources" />
                <exec executable="../src/protoc">
                  <arg value="--java_out=target/generated-sources" />
                  <arg value="--proto_path=../src" />
                  <arg value="../src/google/protobuf/descriptor.proto" />
 <arg value="../src/google/protobuf/compiler/plugin.proto" />
                </exec>
              </tasks>

protobuf-2.5.0.jar,protoc.exe,PluginProtos.java 替换到自动生成代码的工具里,升级完成。


option optimize_for = LITE_RUNTIME;
     optimize_for是文件级别的选项,Protocol Buffer定义三种优化级别SPEED/CODE_SIZE/LITE_RUNTIME。缺省情况下是SPEED。
     SPEED: 表示生成的代码运行效率高,但是由此生成的代码编译后会占用更多的空间。
     CODE_SIZE: 和SPEED恰恰相反,代码运行效率较低,但是由此生成的代码编译后会占用更少的空间,通常用于资源有限的平台,如Mobile。
     LITE_RUNTIME: 生成的代码执行效率高,同时生成代码编译后的所占用的空间也是非常少。这是以牺牲Protocol Buffer提供的反射功能为代价的。因此我们在C++中链接Protocol Buffer库时仅需链接libprotobuf-lite,而非libprotobuf。在Java中仅需包含protobuf-java-2.4.1-lite.jar,而非protobuf-java-2.4.1.jar。
     注:对于LITE_MESSAGE选项而言,其生成的代码均将继承自MessageLite,而非Message。


目录
相关文章
|
前端开发 程序员
Mac电脑:安装cnpm(补充步骤)
在前端开发初期,对于新入行的新手来说,掌握和使用cnpm是必不可少的过程,安装cnpm可以加快安装软件的速度,想要使用cnpm,首先要知道安装步骤,以及解决安装使用的时候遇到的一些问题。本篇博文对之前的npm安装步骤流程做一个补充,大牛可以忽略此篇文章,分享给有需要的人,具体的内容如下所示。
2695 0
Mac电脑:安装cnpm(补充步骤)
|
6月前
|
人工智能 缓存 自然语言处理
别再手搓测试数据了!AE测试数据智造系统揭秘
本文介绍如何通过构建基于大语言模型的测试数据智造Agent,解决AliExpress跨境电商测试中数据构造复杂、低效的问题,推动测试效率提升与智能化转型。
别再手搓测试数据了!AE测试数据智造系统揭秘
|
SQL JavaScript 小程序
来了,MyBatisPlus的join联表查询!
来了,MyBatisPlus的join联表查询!
来了,MyBatisPlus的join联表查询!
|
前端开发 应用服务中间件 nginx
docker运行nginx镜像
这篇文章详细说明了如何在Docker中部署并运行Nginx服务,包括拉取镜像、配置文件的挂载以及容器的启动配置。
1852 0
docker运行nginx镜像
|
监控 安全 算法
在Linux中,cpu使用率过高可能是什么原因引起的?排查思路是什么?
在Linux中,cpu使用率过高可能是什么原因引起的?排查思路是什么?
|
算法 搜索推荐 Java
基于SpringBoot+协同过滤算法的家政服务平台设计和实现(源码+LW+调试文档+讲解等)
基于SpringBoot+协同过滤算法的家政服务平台设计和实现(源码+LW+调试文档+讲解等)
|
JavaScript 前端开发 C#
初识Unity——创建代码、场景以及五个常用面板(创建C#代码、打开代码文件、场景的创建、Project、Hierarchy、Inspector、Scene、Game )
初识Unity——创建代码、场景以及五个常用面板(创建C#代码、打开代码文件、场景的创建、Project、Hierarchy、Inspector、Scene、Game )
1127 0
|
存储 自然语言处理 算法
elasticsearch集群搭建,以及kibana和ik分词器的安装(7.3.2)
elasticsearch集群搭建,以及kibana和ik分词器的安装(7.3.2)
|
前端开发 网络协议 Java
Netty入门指南:从零开始的异步网络通信
Netty入门指南:从零开始的异步网络通信
360 0
|
弹性计算 人工智能 机器人