嘗試使用fabric-sdk-java來鏈接fabric區塊鏈。html
fabric的安裝可參考 http://www.cnblogs.com/maobuji/p/7204446.htmljava
環境準備:git
JDK1.八、IDEA(帶有maven,支持jdk1.8的就能夠)github
IDEA插件安裝:windows
須要安裝Protobuf Support插件服務器
進入IDEA環境後,選擇file->settingmaven
打開後搜索Protobuf Support安裝便可。裝好後重啓IDEA。單元測試
fabric-sdk-java工程包下載:區塊鏈
https://github.com/hyperledger/fabric-sdk-java 選擇clone or download下載最新的代碼,也能夠到release中下載對應版本的代碼測試
解壓後目錄以下:
導入工程:
選擇源代碼工程
而後一路next下去,工程就導入了。
在pom.xml中刪除如下內容:
(1.0.1中使用maven編譯,這裏會報錯。因此從POM.xml暫時刪除掉了這個插件,若是有人知道如何配置,請給我留言)
<plugin> <groupId>pl.project13.maven</groupId> <artifactId>git-commit-id-plugin</artifactId> <version>2.2.2</version> <executions> <execution> <id>get-the-git-infos</id> <goals> <goal>revision</goal> </goals> <phase>validate</phase> </execution> </executions> <configuration> <dotGitDirectory>${project.basedir}/.git</dotGitDirectory> </configuration> </plugin>
編譯
點擊左下角的小方塊,選擇Maven Projects
、
在打開的窗口裏,選擇protobuf:compile右鍵運行,以後在運行工程的compile
會新生成一個target目錄,若是包都生成出來了,應該就是成功了。
運行測試用例
查找End2endIT.java 進行單元測試,提示鏈接不上,工程的基本設置就完成了。下面的章節進行sdk測試類的分析
鏈接地址能夠在測試包的
org.hyperledger.fabric.sdk.testutils.TestConfig類中找到
可是7074是ca的配置路徑,e2ecli例子中並無ca的配置,這部分還酉繼續研究
因爲SDK默認的鏈接例子,是自帶在SDK包裏的。因此要關閉掉以前啓動的e2ecli的例子了。
準備測試服務
建立一個目錄,而後將fabric-sdk-java放進去並解壓
cd fabric-sdk-java-1.0.1/src/test/fixture/sdkintegration/
啓動樣例便可
sh fabric.sh
回到java環境,到testConfig.java中修改IP地址,將localhost都改成,fabric服務器的地址。
運行測試
運行End2endIT單元測試,若是運行正常應該是以下結果,以後就能夠去看單元測試是如何使用sdk與fabric交互的了
補充內容:
maven update之後,pom文件可能會報錯。
(1)com.google.protobuf:protoc:exe:${os.detected.classifier}:3.0.0
這裏是由於${os.detected.classifier}沒有取到合理的值,能夠參考這個文檔進行設置 https://github.com/trustin/os-maven-plugin
${os.detected.classifier}
的值是由 ${os.detected.name}-${os.detected.arch} 構成的
${os.detected.name}的值是由${os.name}轉化而來的。轉化規則在連接中
${os.detected.arch}的值是由${os.arch}轉化而來的,轉化規則也在連接中
可使用以下java代碼得到當前操做系統的值:
System.out.println(System.getProperty("os.name"));
System.out.println(System.getProperty("os.arch"));
Windows 7 amd64 須要被轉換爲:windows-x86_64
取得了${os.detected.classifier}的值之後,在pom的properties中增長<os.detected.classifier>windows-x86_64</os.detected.classifier>便可
注意:不一樣操做系統的值,有所不一樣,請根據轉換表進行轉換