1. 程式人生 > >在eclipse中使用protobuf-dt外掛進行序列化時遇到的問題

在eclipse中使用protobuf-dt外掛進行序列化時遇到的問題

      使用protobuf-dt外掛比在命令列使用命令方便,但是這個外掛的下載地址要翻牆,速度也不理想,所以我在資源裡上傳了一份,下載地址為:protobuf-dt   ,這是一個zip包,安裝方式以eclipse-4.4-luna-sr2為例,在eclipse選單欄點選“Help"---->"Install New Software",彈出如下介面:


    點選"Add"按鈕,出現如下所示對話方塊:


     點選"Archive"按鈕,選擇你剛才下載的zip包,然後在"Name"框裡輸入一個名字,點選"OK"後,過一會會在上一個視窗中出現一個外掛選項,你勾選一下,點選下面的“Next"一路進行就安裝成功了。

    這裡主要記錄一下使用過程中遇到的問題,第一個問題是因為protobuf-dt外掛可以配置為只要儲存一次proto檔案,外掛就會編譯一次,所以當我新建完proto檔案後並儲存後,eclipse控制檯馬上就有反應了:

[command] D:\protobuf\bin\protoc.exe --proto_path=D:\project\第四章\demo_04\src --java_out=D:\project\第四章\demo_04\src-gen D:\project\第四章\demo_04\src\com\hjc\demo\pb\demo.proto
[protoc]  D:\project\第四章\demo_04\src: warning: directory does not exist.
[protoc]  D:\project\第四章\demo_04\src\com\hjc\demo\pb\demo.proto: No such file or directory

     明明那些目錄和檔案都在,為什麼還是報not exist呢,原因是我的路徑中使用了中文,我改為英文後,這個錯誤消失了:

[command] D:\protobuf\bin\protoc.exe --proto_path=D:\project\master\four\demo_04\src --java_out=D:\project\master\four\demo_04\src-gen D:\project\master\four\demo_04\src\demo.proto
[protoc]  [libprotobuf WARNING google/protobuf/compiler/parser.cc:546] No syntax specified for the proto file: demo.proto. Please use 'syntax = "proto2";' or 'syntax = "proto3";' to specify a syntax version. (Defaulted to proto2 syntax.)
           出現了第二個錯誤,這是因為我protobuf的編譯器protoc.exe使用的是3.5.0版本,估計是3.0和2.0版本語法有一些不同,所以使用高版本時,編譯時就會提示你必須設定語法版本,所以我在proto檔案第一行添加了使用語法proto2:
syntax = "proto2"; //要在第一行設定語法版本
option java_outer_classname = "DemoProto";


message Obj1 {
required int32 val1 = 1;
repeated Obj2 val2 = 2;
}


message Obj2 {
required string subval1 = 1;
optional double subval2 = 2;
}
     最後編譯成功了

相關推薦

eclipse使用protobuf-dt外掛進行序列遇到的問題

      使用protobuf-dt外掛比在命令列使用命令方便,但是這個外掛的下載地址要翻牆,速度也不理想,所以我在資源裡上傳了一份,下載地址為:protobuf-dt   ,這是一個zip包,安裝方式以eclipse-4.4-luna-sr2為例,在eclipse選單欄點

在C#使用Json.Net進行序列和反序列及定製

  序列化(Serialize)是將物件轉換成位元組流,並將其用於儲存或傳輸的過程,主要用途是儲存物件的狀態,以便在需要時重新建立該物件;反序列化(Deserialize)則是將上面的位元組流轉換為相應物件的過程;在.Net陣營中,Json.Net是由官方推薦的高效能開源序列化/反序列化工具,其官方網站:ht

對訊息 的正文進行序列出錯:“生成 XML 文件出錯。”

c# 執行儲存過程時報錯:對訊息  的正文進行序列化時出錯:“生成 XML 文件時出錯。” 原因是在執行儲存過程時傳遞的裡面包含有表,但是我沒有給表命名。 解決方法是給宣告的表命名: DataTable I_AnnexTable = GetI_AnnexTable();

對訊息 的正文進行序列出錯:“生成 XML 文件出錯。”

c# 執行儲存過程時報錯:對訊息  的正文進行序列化時出錯:“生成 XML 文件時出錯。” 原因是在執行儲存過程時傳遞的裡面包含有表,但是我沒有給表命名。 解決方法是給宣告的表命名: DataTable I_AnnexTable = GetI_AnnexTable()

eclipse連線資料庫並進行資料庫操作出現空指標異常類java.lang.NullPointerException

java.lang.NullPointerException載入驅動成功!連線資料庫成功!at com.dao.BookDAO.create(BookDAO.java:24)at servlets.Insert_Book_Servlet.doPost(Insert_Book_

在Unity3D使用ScriptableObject進行序列

ScriptableObject型別經常用於儲存一些Unity3D本身不可以打包的一些object,比如字串,一些類物件等。用這個型別的子型別,則可以用BuildPipeline打包成assetbundle包供後續使用,非常方便。這樣除了playerpref和c#檔案讀取外,另外的一種存取一些資料

在Java進行序列和反序列

物件序列化的目標是將物件儲存在磁碟中,或者允許在網路中直接傳輸物件。     物件序列化允許把記憶體中的Java物件轉換成平臺無關的二進位制流,從而允許把這種二進位制流持久儲存在磁碟上或者通過網路將這種二進位制流傳輸到另外一個網路節點。     其他程式一旦

c#對object進行序列和反序列

有時候我們需要對一些資料進行二進位制序列化以達到儲存或傳輸的目的,這裡記錄一下對object的序列化和反序列化操作。 首先引入名稱空間: using System.IO; using System.Runtime.Serialization.Formatters.Bina

python使用pickle進行序列

  python的pickle模組實現了基本的資料序列和反序列化。通過pickle模組的序列化操作我們能夠將程式中執行的物件資訊儲存到檔案中去,永久儲存;通過pickle模組的反序列化操作,我們能夠從檔案中建立上一次程式儲存的物件。   基本介面:   pickle.

.NETJSON資料進行序列和反序列

可以使用DataContractJsonSerializer類將型別例項序列化為JSON字串,並將JSON字串反序列化為型別例項。 DataContractJsonSerializer在System.Runtime.Serialization.Json名稱空間下,.NET F

spring-data-redis 使用 protobuf進行序列和反序列

這是spring配置,protostuff有一個特點就是你反序列化的時候需要指定反序列化的型別Class,而如果按常規spring-data-redis規範,只能實現RedisSerializer介面,其中反序列化介面T deserialize(byte[] bytes)

c# 利用 CookieContainer 對 Cookie 進行序列和反序列校驗

pre code ads domain sga pdb spa ner main private void Form1_Load(object sender, EventArgs e) { var cookieStr = @"

Tensorflow進行POS詞性標註NER實體識別 - 構建LSTM網絡進行序列標註

labels rop tac val when optimize 添加 implement verbose http://blog.csdn.net/rockingdingo/article/details/55653279 Github下載完整代碼 https://gi

AndroidXML文件的序列生成與解析

eval test director 南海 attribute trac cli found dir 首先,我把Person的實體類 package net.loonggg.test; public class Person { privat

項目序列,去除屬性為null的key

序列化 方法 key 技術分享 bean 過濾 註解 ima pro 項目中對象屬性中的字段有很多時,每次查詢需要的屬性都不同,但是還是返回null,過濾掉為空的方法 1.@JsonIgnore標簽 此註解用於方法或者屬性上(最好就是用在屬性上),作用就是在對象做序列化時過

使用 JSON JavaScriptSerializer 進行序列或反序列出錯

ali rac service ons trac 字符 max sta spa 如題 報錯提示: 使用 JSON JavaScriptSerializer 進行序列化或反序列化時出錯。字符串的長度超過了為 maxJsonLength 屬性設置的值。","StackTra

python後端數據序列是不顯示中文的解決方法

clas pre 好的 方法 解決辦法 dump 中文 style color 我們在前後端交互的時候,讓序列化的數據更友好的顯示,我們會用到 import json js = json.loads(‘{"name": "多多"}‘) print (json

機器學習入門-載入sklearn資料並用matplotlib進行視覺

from sklearn import datasets import matplotlib.pyplot as plt def get_data(): """ 從sklearn中獲取鳶尾花的資料 :return: 鳶尾花資料的字典,字典中包括的key有:【'data'

Eclipse安裝springmvc外掛

 我網上找了很多方法,常見的兩種: 方法一: 先去下載spring-framework-x.x.x.RELEASE.zip包,然後解壓,後面需要配置什麼,具體的筆者也記不了,哈哈哈   方法二: 開啟選單欄的 help-》Eclipse Marketplace...,然後輸入st

Calibre使用DeDRM外掛進行Kindle電子書解鎖

小書匠 廢話不多說,下面是Calibre和DeDRM外掛的下載地址: https://calibre-ebook.com/download https://github.com/apprenticeharper/DeDRM_tools/releases/tag/v