最近在搞java服务器项目,前段要求用protobuf进行数据传输,以前没搞过,查了很多资料,走了一些弯路!

先把一些需要下载的链接放上来:

protobuf下载地址:https://github.com/protocolbuffers/protobuf/releases?after=v3.5.2

maven下载地址:http://maven.apache.org/download.cgi

关于protobuf下载那些内容,看图:

使用protobuf的流程无非就是三部分。数据定义、数据生成、数据解析

数据定义其实就是自己编写一个.proto文件 例如这个 protoDemo.proto文件:

这只是一个简单的结构,里面定义了 id、name等的一些属性,required 、optional这一部分是关键字部分,结构并不复杂,大家自行百度自学!这个地址不错 https://blog.csdn.net/skh2015java/article/details/78404235

这个文件通过我们下载的proto.exe这个工具生成我们对应的java文件,供项目使用!直接打开cmd窗口,怎么使用从网上查查,有很多

最终我是将protoDemo.proto  通过protoc.exe 生成了想要的 ProtoDemo.java文件

到这里是比较容易的,那么怎么在项目里使用protobuf解析这个文件呢!其实是有两种方式

1.编译jar包,在项目里导入jar包

其实人家有提供说明就在README.md里,只是我们不知道看罢了,结果浪费了很多时间查资料看文档的!

README.md就在protobuf-3.4.0\java文件夹下里面试这样描述的

这里主要说几点遇到的问题:

1. maven下载解压后,需要在环境变量进行配置

配置成功在cmd里测试一下: 执行命令:mvn -v

配置成功会打印一些maven的信息出来

然后直接cd到protobuf-3.4.0\java文件夹下,按照图里的步骤,进行编译就行!

maven默认的情况下是从Google的官网下载那些所需的文件,所以我们在国内如果网不行的还是,还是应该走一些国内的镜像,这里就需要对maven进行一下配置

在xxx\apache-maven-3.6.0-bin\conf路径下找到settings.xml 打开,在 <mirrors>标签下添加

<mirror>
      <id>aliyun</id>
        <name>aliyun Maven</name>
        <mirrorOf>*</mirrorOf>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>

如图

这个就是用的阿里云的镜像下载的,当然还有其他的镜像,大家自行百度吧!

开始编译其实就是下载资源的过程,从镜像网站会下载资源到你的本地,你本地路径怎么设置呢!参考链接:http://www.cnblogs.com/duanxz/p/5210189.html

因为有些文件下载到本地仓库后,会优先从本地仓库查找并使用,这时候你编译出问题了,很可能是你本地残酷的文件下载下来的就有问题,所以,根据提示,在本地仓库找到对应的文件,删除,再重新编译!

还有就是有些版本的test代码有问题,编译报错,果断删除相应的test里的java代码,再编译,因为那些只是例子,编译jar包根本不需要!

就这两句红字我就搞了一天,因为我从没用过maven,我是菜鸡!你们不要走我的弯路

2.使用protobuf源码

行对与第一种方式,第二种方式就简单多了,直接引入 xxx\protobuf-3.4.0\java\core\src\main\java下的源码!其实也不能完全copy过去,在这之前还需要编译一个文件,不然copy过去会报错

如图:

他这个2)里的命令是不是多了\呀,我上传我的大家借鉴下吧

生成DescriptorProtos.java后,就可以直接将源码直接拷贝到工程里直接用了!

但是工程里还会报错,妈了个鸡,一个unsafe什么玩意的错误,好吧,鼓捣半天,这是个eclipse设置问题,如图修改一下

这个默认情况下是error,改成warning,就不提示unsafe相关的错误了!

至此,天下太平!

趁着热乎,赶紧整理出来,如果有不周到的地方,烦请留言!还有,csdn上的资源太贵了!你想不折腾下载个现成的,不如好好想想自己搞!

maven还有很多东西要学习,不懂得看看这个文章 https://blog.csdn.net/java_2017_csdn/article/details/77450598

我就是看了这篇文章,才知道maven是个什么东西!大家共勉吧!

图片里写的proto.exe就是protoc.exe,笔误,不要误导大家哈!

protobuf 在win10系统如何编译jar包的更多相关文章

  1. jad 反编译 jar包

    1.利用winrar解压缩jar包 或者CMD>jar -xvf test.jar -C classes 2.下载jad,利用jad反编译jar包 CMD>[jad_home]/jad.e ...

  2. MatLab 2014a编译jar包时mcc无法使用的问题

    http://blog.csdn.net/heroafei/article/details/43273373 MatLab 2014a编译jar包时mcc无法使用的问题 2015-01-29 16:5 ...

  3. IDEA—使用插件反编译jar包

    关注微信公众号:CodingTechWork,一起学习进步. 引言   在产品上线后,如果遇到问题阻塞,我们第一步要做的就是去查看日志,但是代码不是一个人写的,说不定就会遇到没有日志的,遇到这种情况, ...

  4. Android源码编译jar包BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY的区别(三)

    继续, 上文提到的是用BUILD_STATIC_JAVA_LIBRARY在Android4.2源码下编译出来的jar包可以在Eclipse(SDK版本4.1)上使用, 找来Android6.0的源码, ...

  5. Android源码编译jar包BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY的区别(二)

    上文简单介绍了BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY编译出来jar包的区别, 那么你如果拿到了一个内容是dex格式的jar包,而你又偏偏需要这个ja ...

  6. Android源码编译jar包BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY的区别(一)

    一般情况下,在Android源码下编译一个jar包的典型makefile(Android.mk)如下: 在文件中加入以下内容: LOCAL_PATH:= $(call my-dir)#make jar ...

  7. 如何修改可运行Jar包,如何反编译Jar包

    将可运行Jar包,反编译成项目,修改代码,再次编译,打包. 需要工具:jd-gui.myeclipse 具体步骤: 1.使用jd-gui打开原始的Jar包,选择File-->Save All  ...

  8. 反编译Jar包

    Jar 包(Java Archive)是对 Java 程序的打包,它可能包含源码,也可能没有. 对于有包含源码的 Jar 包,在 Eclipse 工程里设定好 source code 路径后能直接查看 ...

  9. JD-GUI反编译jar包为Java源代码

    程序员难免要借鉴其他java工程的代码.可有时只能拿到.calss文件,jar包或者war包,这个时候要求程序员能熟练的将这些类型文件反编译为Java代码并形成可编译运行的项目.本文介绍的反编译工具是 ...

随机推荐

  1. [APIO2015]巴厘岛的雕塑

    题目描述 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有 NN 座雕塑,为方便起见,我们把这些雕塑从 11 到 NN 连续地进行标号,其中第 ii 座雕塑的年龄是 Y ...

  2. 【费用流】bzoj2661 [BeiJing wc2012]连连看

    将每个数拆点,互相连边,然后满足条件的数对之间互相连边,跑最大费用流,答案是流量和费用分别除以2. 一定要i->j.j->i都连上,否则可能会出现一个数在一边被选择了,在另一边的另一个匹配 ...

  3. asp.net 域名注册查询接口 支持批量后缀查询

    最近在完成公司网站www.xuhongkj.com的时候,需要用到域名查询的功能,网上查了一些资料,几乎都是ASP版的,而且功能有限,不能满足我的要求. 百度后,结合网上的例子,整理出了该功能! as ...

  4. Ubuntu 14中,Foxmail关联163邮箱账号时,总提示“密码错误”的解决方案

    不知道在什么时候,网易邮箱搞了个“客户端授权密码”功能,也就是说,原先输入自己设置的邮箱密码即可完成登录,但是现在需要输入官方产生的“授权密码”,方可完成登录授权! 相关路径: 设置 -> PO ...

  5. centos7.2+zabbix3.2+sedmail邮件告警

    http://blog.csdn.net/xiegh2014/article/details/56277111

  6. 针对标签中设置 disabled="true",$("#id").serialize()获取不到value的解决方法

    今天给<select>增加disabled="true", 发现$("#form").serialize()的结果不包含select标签的值,解决办 ...

  7. Node.js 连接mySQL程序

    环境:Oracle Enterprise Linux R5U7 安装mySQL 关于离线安装,下次在尝试,目前先来在线安装,过程如下: $ rpm -qa | grep -i mysql $ wget ...

  8. CAP 定理的含义

    分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的. 分布式系统的最大难点,就是各个节点的状态如何同步.CAP 定理是这方面的基本定理,也是理解分布式系统的起 ...

  9. centos搭建git服务器(转)

    一:git服务安装 1.安装git相关组件 [root@gitserver ~] yum -y install git 2.创建git用户 [root@gitserver ~] groupadd gi ...

  10. 一起來玩鳥 Starling Framework(7)MovieClip

    承上一篇,我們接著來講最後一個IAnimatable類別,MovieClip.Starling的MovieClip跟native的MovieClip不太一樣,它只能接收一個Vector.<Tex ...