fabric java chaincode开发详细步骤!

# fabric java chaincode开发详细步骤!

作者:小桥夜雪

## 一. 配置相关环境

操作系统:ubuntu 16.04 LTS

 

fabric版本:0.6

### 1.配置fabric网络环境。

笔目前使用fabric0.6版本,基于docker容器配置,网上有各种教程,自己可以百度。

### 2.安装gradle环境。

安装gradle环境可以参考这一篇文章:http://blog.csdn.net/hejjiiee/article/details/53510209

### 3.安装REST API客户端

笔者使用firefox浏览器自带的RESTClient插件,具体安装方法可以自行百度。

### 4.编译java shim层的jar包文件。

#### (1)下载fabric源码

在OPATH路径下建立以下文件夹

```

mkdir -p $GOPATH/src/github.com/hyperledger

```

进入到刚建立的文件夹:

```

cd $GOPATH/src/github.com/hyperledger

```

从github上下载fabric0.6源码:

```

git clone https://github.com/hyperledger/fabric.git -b v0.6

```

#### (2)编译jar包

进入以下目录:

```

cd $GOPATH/src/github.com/hyperledger/fabric/core/chaincode/shim/java

```

执行以下两条命令编译:

```

gradle -b build.gradle clean

gradle -b build.gradle build

```

执行结果如下:

![image2](‪C:\Users\Administrator\Desktop\HJJ\2.png)

 

 

这样java chaincode的编译运行环境就搭建好了。

## 二. 部署java chaincode范例进行测试

这里不过多赘述,可以参考这篇文章的步骤:https://www.ibm.com/developerworks/library/j-chaincode-for-java-developers/

## 三. 开发自己的java chaincode

### 1.设置开发环境

可以使用eclipse集成gradle插件进行开发。

#### (1)安装eclipse

网上有很多教程,自己搜索安装。

#### (2)安装gradle插件

打开eclipse-->help-->Eclipse Marketplace,然后搜索buildship,如下图:

![image1](‪C:\Users\Administrator\Desktop\HJJ\3.png)

然后点击install进行安装,安装完成后重启eclipse。

### 2.新建gradle项目

如图:

点击next;

点击next;

红圈处填写你的gradle目录,然后点击finish。

此时就会生成名为 ChainCode-test的gradle项目。

3.开发java chaincode

(1) 修改build.gradle文件

打开build.gradle文件,用chaincode任一范例中的build.gradle文件覆盖此文件的内容。此时要注意把build.gradle文件中mainClassName字段改为你相应的目录,如图:

然后进行Refresh操作,如图:

此时项目会自动下载相关的jar包。

(2)新建java文件,开发代码。

代码开发可以用如下模板:

package test;

 

import org.hyperledger.java.shim.ChaincodeBase;

import org.hyperledger.java.shim.ChaincodeStub;

 

public class main extends ChaincodeBase {

 

@Override

public String run(ChaincodeStub stub, String function, String[] args) {

System.out.println("In run, function:"+function);

switch (function) {

case "init":

return null;

case "put":

for (int i = 0; i < args.length; i += 2)

stub.putState(args[i], args[i + 1]);

break;

case "del":

for (String arg : args)

stub.delState(arg);

break;

case "hello":

System.out.println("hello invoked");

// log.info("hello invoked");

break;

}

return null;

}

@Override

public String query(ChaincodeStub stub, String function, String[] args) {

String value=stub.getState(args[0]);

if(value!=null&&!value.isEmpty())

return "key="+args[0]+" value="+value;

else

return "no value for "+args[0];

}

@Override

public String getChaincodeID() {

String id="hjj";

System.out.println("The ChaincodeID is "+id);

return id;

}

public static void main(String[] args) throws Exception {

System.out.println("starting to test chaincode"+args);

new main().start(args);

}

}

 

需要导入其他jar包的时候:在自己的 Gradle 项目里建立一个名为 libs (这个名字可以自己定义,不一定非要叫这个名字)的文件夹,把自己本地的 jar 包拷贝到这个文件夹中。

然后在build.gradle配置如下:

dependencies { compile fileTree(dir:'libs',include:['*.jar'])}

然后在此进行进行Refresh刷新操作。

 

(3)代码开发完成后,进行编译调试。

在Gradle Tasks面板选中要编译的项目,然后展开build,右键单击Run Gradle Tasks进行编译:

若显示如下,则编译成功:

此时在你的gradle项目中会出现build文件夹,此时可直接在此文件夹下运行gradle -b build.gradle run

命令运行程序,也可以进入build-->distributions文件夹,会看到如下两个压缩包:

解压任一压缩包,并进入ChainCode-test-->bin目录,此时可看见可执行文件:

在此目录下打开终端窗口,输入./ChainCode-test命令执行程序。(注意:此时fabric网络需要开启,就会在network窗口中看见链码注册到区块链网络的相关信息)

 

你可能感兴趣的:(区块链,fabric,JAVA)