,step1:準備.proto文件java
1 syntax = "proto3"; 2 3 message gps_data { 4 int64 id = 1; 5 string terminalId = 2; 6 string dataTime = 3; 7 double lon = 4; 8 double lat = 5; 9 float speed = 6; 10 int32 altitude = 7; 11 int32 locType = 8; 12 int32 gpsStatus = 9; 13 float direction = 10; 14 int32 satellite = 11; 15 }
step2:下載.proto文件的編譯器和對應版本的jar包測試
step3:解壓,經過命令行使用protoc.exe程序編譯.proto文件,源文件目錄結構以下:ui
與之對應的指令以下:google
編譯後的.java文件則在以下目錄:spa
step4:解壓,製做相應的jar包命令行
第一步:在src目錄下放一個protoc.exe程序文件3d
第二步:在java文件夾下面的core/src文件夾中也要放置一個protoc.exe程序文件code
第三步:cd到上面所述java文件夾下面,直接運行如下命令便可對象
mvn install
第四步:會在java文件夾下面的core/target文件夾下面生成protobuf-java-3.5.1.jar文件blog
step5:建立一個java工程進行測試
1 package com.per.sdg.demo; 2 3 import com.google.protobuf.InvalidProtocolBufferException; 4 import com.per.sdg.entity.GpsData; 5 6 public class Demo4 { 7 public static void main(String[] args) { 8 System.out.println("===== 構建一個GPS模型開始 ====="); 9 GpsData.gps_data.Builder gps_builder = GpsData.gps_data.newBuilder(); 10 gps_builder.setAltitude(1); 11 gps_builder.setDataTime("2017-12-17 16:21:44"); 12 gps_builder.setGpsStatus(1); 13 gps_builder.setLat(39.123); 14 gps_builder.setLon(120.112); 15 gps_builder.setDirection(30.2F); 16 gps_builder.setId(100L); 17 18 GpsData.gps_data gps_data = gps_builder.build(); 19 System.out.println(gps_data.toString()); 20 System.out.println("===== 構建GPS模型結束 ====="); 21 22 System.out.println("===== gps Byte 開始====="); 23 for(byte b : gps_data.toByteArray()){ 24 System.out.print(b); 25 } 26 System.out.println("\n" + "bytes長度" + gps_data.toByteString().size()); 27 System.out.println("===== gps Byte 結束 ====="); 28 29 System.out.println("===== 使用gps 反序列化生成對象開始 ====="); 30 GpsData.gps_data gd = null; 31 try { 32 gd = GpsData.gps_data.parseFrom(gps_data.toByteArray()); 33 } catch (InvalidProtocolBufferException e) { 34 e.printStackTrace(); 35 } 36 System.out.print(gd.toString()); 37 System.out.println("===== 使用gps 反序列化生成對象結束 ====="); 38 } 39 }