Hyperledger Fabric-sdk-java

版权声明:本文为博主原创文章,遵循​​ CC 4.0 BY-SA ​​​版权协议,转载请附上原文出处链接和本声明。 ​

Hyperledger Fabric-sdk-java

本人使用环境为​​macOS High Sierra 10.13.4​​​、​​Java 9.0.4​

目前Hyperledger Fabric官方主要是支持的​​fabric-sdk-node​​​,并且有较为完善的中英文文档。然而我的项目要求为Java,所有只能下载​​fabric-sdk-java​​。

Prerequisite:


  1. Apache Maven(可以通过homebrew安装)
  2. JDK 1.8+(推荐就是1.8,项目就是用1.8写成的,用​​Java 9​​会和我一样遇见一些奇奇怪怪的问题)
  3. IDEA

下载项目

git clone https://github.com/hyperledger/fabric-sdk-java

  • 1

导入项目

IDEA,以maven工程导入项目,导入依赖。

少量第三方库,可以运行前在根目录下执行以下命令:

mvn dependency:tree

  • 1

运行fabric

cd fabric-sdk-java/src/test/fixture/sdkintegration
./fabric up

  • 1
  • 2

如果出现image不能找到的错误修改fabric-sdk-java/src/test/fixture/sdkintegration 下的docker-compose.yaml中的对应的​​image tag​​即可。

运行测试用例

我们挑选比较常用的​​End2endIT.java​​运行。

这时你便会发现,我们从clong下来的代码中并没有包含​​org.hyperledger.fabric.protos​​这个包。所以需要我们自行下载这个包,并把它添加到我们的项目中的对应位置。这里提供一个源码的​​下载地址​​ 

Hyperledger Fabric-sdk-java_导入项目

我们下载对应的jar文件后解压,导入对应包即可。

由于是JDK的代码,我们在用​​Java 9​​编译时有一些选项需要注意

Hyperledger Fabric-sdk-java_java_02

我们需要将字节码文件的版本都设为9。并在命令行参数上加上如下几个参数。

--add-exports java.base/jdk.internal.misc=ALL-UNNAMED --add-modules java.xml.bind --add-modules java.corba

  • 1

此外我们还需要修改项目中的pom.xml文件

Hyperledger Fabric-sdk-java_java_03

将​​source​​和​​target​​中的​​1.8​​都改为​​9​​如果在编译时还是报差某些类时,自己在​​pom.xml​​中加上对应的dependency。比如我差​​java.annotation​​我在​​dependency​​中就加上了

Hyperledger Fabric-sdk-java_perl_04

解决完了这些依赖后我们再次编译就应该能够成功运行了。运行结果如下图。 

Hyperledger Fabric-sdk-java_xml_05