protobuf 在win10系统如何编译jar包

最近在搞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,笔误,不要误导大家哈!

原文地址:https://www.cnblogs.com/ruber/p/10178925.html

时间: 2024-07-30 09:55:27

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

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

http://blog.csdn.net/heroafei/article/details/43273373 MatLab 2014a编译jar包时mcc无法使用的问题 2015-01-29 16:58 4618人阅读 评论(2) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. 使用Matlab2014a编译jar包时报错: Test checkout of feature 'Compiler' failed. 经查证是因为Matlab2014a破解不全的问题 搜到一个网友的解

Android源码编译jar包BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY的区别

一般情况下,在Android源码下编译一个jar包的典型makefile(Android.mk)如下: 在文件中加入以下内容: LOCAL_PATH:= $(call my-dir)#make jarinclude $(CLEAR_VARS)LOCAL_SRC_FILES := $(call all-subdir-java-files)LOCAL_MODULE := mytestjarinclude $(BUILD_JAVA_LIBRARY) #include $(BUILD_STATIC_JA

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

上文简单介绍了BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY编译出来jar包的区别, 那么你如果拿到了一个内容是dex格式的jar包,而你又偏偏需要这个jar包导入Eclipse来做开发, 手头偏偏又没有这个jar包的源码,或者有源码,但是没有Android源码编译(mm)的环境,怎么办? 这个时候谷歌安卓反编译工具(dex2jar, 本人实在太懒,就不提供下载链接了)就有用处了, 将jar包里面的dex文件(classes.dex)用此神器转换成一个

Win10系统下编译GEOS3.6.2

环境说明 1.Win10专业版.64位: 2.VS2012旗舰版: 3.cmake-3.9.0.64位: 资源准备 GEOS管网(http://trac.osgeo.org/geos)下载3.4.3版本,解压到F:\OSG\geos,并在里面新建一个build文件夹,用来存放编译文件. 安装源码 1.将F:\OSG\geos目录下的CmakeLists.txt,拖拽至Cmake,Where is the source code的目录为geos解压后的目录,Where to build the b

vs2015+64位win10系统ceres-solver编译

记录下自己编译ceres-solver走过的弯路,同时希望对其他人能有所帮助. 编译过程主要参考以下两篇博文,但还是存在一些大坑,后面我会着重强调. http://blog.csdn.net/streamchuanxi/article/details/52944652 http://blog.csdn.net/yizhou2010/article/details/52596280 1. 下载必备库ceres-solver-1.11.0.eigen.gflags-2.0.glog-master 具

jenkins编译jar包 报connection连接错误

原因是因为编译启动连接了注册中心 eureka.client.service-url.defaultZone=http://localhost:8093/eureka/ eureka.client.registerWithEureka=false #是否将自己注册到server上面 默认为true 这里改为false eureka.client.fetchRegistry=false #是否从server上面获取注册信息,默认为true 这里也该为false,再次编译不会报错了 #每隔30秒发送

在Maven中新增自定的jar包

引言: 在软件项目中,Maven提供了一体化的类库管理系统,非常实用.但是,如果新增的类库jar在网络上无法获取到,如何在本地按照Maven的规则添加进来呢?本文将通过一个小例子展示新增过程. 背景介绍: 一个Maven管理的Java项目,提供一个系统级别的POM.xml,其中定义了整个项目使用的类库. 需求: 需要添加一个自定义的类库到当前项目中.假定当前的类库文件名为:abc.jar.. 如何将类库添加进来? 1.  找到当前Maven的Repository类库位置 一般默认情况下,在win

html或者jsp页面引用jar包中的js文件

一,页面上引用jar包中的js文件的方法 使用java web框架AppFuse的时候发现,jquery.bootstrap等js框架都封装到jar包里面了.这些js文件通过一个wro4j的工具对其进行了压缩集成到一个js文件里面.页面使用的时候的时候,引用这一个js文件即可.通过解读wro对于js处理的过程,找到了html或者jsp引用jar包中的js文件的方法: <c:set var="base" value="${pageContext.request.conte

使用gradle打包jar包

近期用android studio来做android开发的IDE,它是使用gradle来构建的,于是開始学习gradle. 如今有一个项目,里面有一个android-library的模块.我想在做release的时候,把这个模块中我写的代码编译并打包成jar包,而且和依赖的jar包拷贝出来,但android studio对android-library的管理是把其与依赖包打包成一个aar的包的,显示这不是我要的,于是便想用gradle来实现. 首先我找到的第一种方法是在模块中的build.gra