美文网首页区块链
Hyperledger Fabric Java SDK 1.1

Hyperledger Fabric Java SDK 1.1

作者: 李孝伟 | 来源:发表于2018-05-03 19:38 被阅读1303次

    基础网络已经进展到了一定阶段,就要进行智能合约和顶层应用的编写了,这里先说下Java SDK;官方给予了使用方式,如果按照正常的流程其实非常简单,因为走了弯路,所以来记录一下。

    强烈建议使用IntelliJ IDEA官网下载然后破解!!!!!!(因为折腾使用eclipse白折腾了一天)

    强烈建议多看官方的文档!!!

    先睹为快:
    官方地址:https://github.com/hyperledger/fabric-sdk-java

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

    拉取到本地;

    一、搭建tests的基础网络
    1、复制基础配置文件

    基础网络配置目录:
    /fabric-sdk-java/src/test/fixture/sdkintegration
    
    将其打包放置到fabric环境中;
    

    2、启动文件查看(一定要自己看下启动,学习很重要)
    可以看到一个运行文件:fabric.sh (截取最重要部分)

    
    function up(){
    
      if [ "$ORG_HYPERLEDGER_FABRIC_SDKTEST_VERSION" == "1.0.0" ]; then
        docker-compose up --force-recreate ca0 ca1 peer1.org1.example.com peer1.org2.example.com ccenv
      else
        docker-compose up --force-recreate
    fi
    
    }
    

    3、这里建议使用fabric 1.1.0 版本,使用1.0.0会遇到一些问题,别问我为啥,反正放弃了1.0.0。(1.1跟1.0兼容性感觉有问题)
    如果你还是v1.0.0,这里有个脚本拉取v1.1.0吧,会很快,不用担心;如果有更新的,改下VERSION=xxx就好了。

    #!/bin/bash
    #
    # Copyright IBM Corp. All Rights Reserved.
    #
    # SPDX-License-Identifier: Apache-2.0
    #
    
    export VERSION=1.1.0
    export ARCH=$(echo "$(uname -s|tr '[:upper:]' '[:lower:]'|sed 's/mingw64_nt.*/windows/')-$(uname -m | sed 's/x86_64/amd64/g')" | awk '{print tolower($0)}')
    #Set MARCH variable i.e ppc64le,s390x,x86_64,i386
    MARCH=`uname -m`
    
    dockerFabricPull() {
      local FABRIC_TAG=$1
      for IMAGES in peer orderer couchdb ccenv javaenv kafka zookeeper tools; do
          echo "==> FABRIC IMAGE: $IMAGES"
          echo
          docker pull hyperledger/fabric-$IMAGES:$FABRIC_TAG
          docker tag hyperledger/fabric-$IMAGES:$FABRIC_TAG hyperledger/fabric-$IMAGES
      done
    }
    
    dockerCaPull() {
          local CA_TAG=$1
          echo "==> FABRIC CA IMAGE"
          echo
          docker pull hyperledger/fabric-ca:$CA_TAG
          docker tag hyperledger/fabric-ca:$CA_TAG hyperledger/fabric-ca
    }
    
    : ${CA_TAG:="$MARCH-$VERSION"}
    : ${FABRIC_TAG:="$MARCH-$VERSION"}
    
    echo "===> Downloading platform binaries"
    curl https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/${ARCH}-${VERSION}/hyperledger-fabric-${ARCH}-${VERSION}.tar.gz | tar xz
    
    echo "===> Pulling fabric Images"
    dockerFabricPull ${FABRIC_TAG}
    
    echo "===> Pulling fabric ca Image"
    dockerCaPull ${CA_TAG}
    echo
    echo "===> List out hyperledger docker images"
    docker images | grep hyperledger*
    

    4、启动
    因为demo已经生成好了证书,所以这里就不去再生成再讲了;

    nohup ./fabric.sh up &
    后台运行,这里没有用-d 的原因是希望能通过nohup.out查看下之后的所有运行日志;如果-d则需要每个容器单独的查看,当然如果需要看更细的日志请在docker-compose 后加 --verbose
    

    二、导入并进行测试
    本人是先按照官方指导在eclipse上折腾了半天,后来单独运行tests有问题,最后直接导入到IntelliJ IDEA上运行的tests;
    这是个maven工程
    1、下载SDK的第三方依赖

    mvn dependency:tree 
    或者 mvn dependency:list.
    然后 mvn dependency:analyze-report 
    

    2、然后跳过测试进行编译

    mvn install -DskipTests 
    

    到目前为止跟eclipse没有一点关系,如果非要用eclipse,这里也简单讲下;不用eclipse的直接跳到4;
    3、eclipse导入项目

    a、导入(导入之前要将.project文件中顶部的<--//-->的整块注释删掉)
    File > Import > Maven > Existing Maven Project
    
    b、会遇到报错
    **No marketplace entries found to handle maven-antrun-plugin:1.4:run in Eclipse.  Please see Help for more information.**
    直接忽略就好了;
    
    c、还会有个错误(官方真的是有错误不调整。。。)
    **Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-antrun-plugin:1.4:run (execution: default, phase: generate-test-resources).**
    点击右键,选择**Mark goal run as ignored in eclipse.**直接忽略这个假错误
    
    d、启用Checkstyle(这个有可能没有安装过)
    安装:
    Help --> Install New Software
    CheckStyle插件地址:[http://eclipse-cs.sourceforge.net/update](http://eclipse-cs.sourceforge.net/update)
    然后next选择安装,等待安装就好,可能需要半个小时
    启用:
    Project > Properties > Checkstyle
    然后这几个选项:“Checkstyle active for this project”, “files outside source directories”, and “derived (generated) files”都钩上;
    然后在“Local Check Configurations”选项卡,选择new添加新的,选择“External Configuration File”方式,然后会有个browser按钮,选择根目录的“checkstyle-config.xml” 文件即可;
    最后应用确定;
    
    e、完成
    

    再说个eclipse必然恼人的,在测试类中Testconfig等一些类无法跳转,而且不能单独运行tests,原因就是eclipse认为test/java不是sources文件!!

    4、关联环境进行测试
    首先要更新网络地址:

    /fabric-sdk-java/src/test/java/org/hyperledger/fabric/sdk/testutils/TestConfig.java
    文件中:
    private static final String LOCALHOST = "10.0.200.117";//Change test to reference another host .. easier config for my testing on Windows !
    将LOCALHOST改为实际的地址!!!
    

    可以直接在根目录使用:

    mvn  install
    

    会顺便运行测试案例

    5、使用IntelliJ IDEA进行单个测试
    同样是导入一个maven项目,软件会自动下载依赖;
    然后切换到tests视图,选择End2endIT.java运行即可!

    三、可能会遇到的问题
    1、No goals have been specified for this build. You must specify a valid lifecycle phase ……
    紧跟<build>标签后面 加上<defaultGoal>compile</defaultGoal>即可

    2、getPayload()报错
    这个是sdk内容,直接忽略

    相关文章

      网友评论

        本文标题:Hyperledger Fabric Java SDK 1.1

        本文链接:https://www.haomeiwen.com/subject/fcplrftx.html