尝试使用fabric-sdk-java来连接fabric区块链。
fabric的安装可参考 http://www.cnblogs.com/maobuji/p/7204446.html
环境准备:
JDK1.8、IDEA(带有maven,支持jdk1.8的就可以)
IDEA插件安装:
需要安装Protobuf Support插件
进入IDEA环境后,选择file->setting
打开后搜索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>即可
注意:不同操作系统的值,有所不同,请根据转换表进行转换