protoc.exe java_protobuf java 使用 window
1.到http://code.google.com/p/protobuf/downloads/list?,選擇其中的win版本下載,我選擇的是protoc-2.4.1-win32.zip
2.下載一個protobuf-java-2.4.1.jar文件(注意,要與你剛才下的proto.exe版本相同)
然后就開始開發(fā)了。
步驟:
1.用記事本編寫一個.proto文件:
}如:我編寫的是test.proto
package protobuf;
option java_package = "com.sq.protobuf";
option java_outer_classname = "FirstProtobuf";
message testBuf ?{
required int32 ID = 1;
required string Url = 2;
}
將其放在與剛解壓的protoc.exe同級目錄中。
2.
在cmd中,到protoc-2.4.1-win32文件夾下,
執(zhí)行
E:\protoc-2.4.1-win32>protoc.exe --java_out=./ test.proto
則可以找到的一個生成的FirstProtobuf.java文件。
3.
在MyEclipse中新建一個java project,建立包com.sq.protobuf,然后將剛才生成的FirstProtobuf.java文件放在其下面。
此時會報錯,因為沒有引入jar包,在package視圖下,將protobuf-java-2.4.1.jar引入,即可解決問題。
4.
建立測試文件:
package com.sq.protobuf.test;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import com.google.protobuf.InvalidProtocolBufferException;
import com.sq.protobuf.FirstProtobuf;
public class Test {
public static void main(String[] args) {
//序列化過程
//FirstProtobuf是生成類的名字,即proto文件中的java_outer_classname
//testBuf是里面某個序列的名字,即proto文件中的message testBuf
FirstProtobuf.testBuf.Builder builder=FirstProtobuf.testBuf.newBuilder();
builder.setID(777);
builder.setUrl("shiqi");
//testBuf
FirstProtobuf.testBuf info=builder.build();
byte[] result = info.toByteArray() ;
//反序列化過程
try {
FirstProtobuf.testBuf testBuf = FirstProtobuf.testBuf.parseFrom(result);
System.out.println(testBuf);
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
}
}
發(fā)現(xiàn)可以將其序列化,插入到數(shù)據(jù)庫,并可以從數(shù)據(jù)庫出取出后,反序列化,內(nèi)容可以正常顯示出來。
注意的就是2點:
1.不能用statement,否則無法插入blob類型的數(shù)據(jù)
2.為參數(shù)賦值時,要用
ByteArrayInputStream stream = ?new ByteArrayInputStream(result);
ps.setBinaryStream(1,stream,stream.available());
總結(jié)
以上是生活随笔為你收集整理的protoc.exe java_protobuf java 使用 window的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在线post测试java接口测试_好用的
- 下一篇: java 时间l_java中获取系统时间