1. 程式人生 > >protobuf 在win10系統如何編譯jar包

protobuf 在win10系統如何編譯jar包

設置 www content core 源碼 錯誤 分享圖片 網站 java服務

最近在搞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包