Hyperledger fabric 运行hyperledger fabric java网关示例代码抛出必须设置网关标识

Hyperledger fabric 运行hyperledger fabric java网关示例代码抛出必须设置网关标识,hyperledger-fabric,hyperledger-fabric-sdk-java,Hyperledger Fabric,Hyperledger Fabric Sdk Java,我正在尝试在基本网络上编写一个fabric gateway应用程序,我的代码如下所示 public static void main(String[] args) throws Exception { // Load a file system based wallet for managing identities. Path walletPath = Paths.get("wallet"); Wallet wallet = Wallet.

我正在尝试在基本网络上编写一个fabric gateway应用程序,我的代码如下所示


     public static void main(String[] args) throws Exception {
       // Load a file system based wallet for managing identities.
       Path walletPath = Paths.get("wallet");
       Wallet wallet = Wallet.createFileSystemWallet(walletPath);

       // load a CCP
       Path networkConfigPath = Paths.get("..", "..", "basic-network", "connection.yaml");

       Gateway.Builder builder = Gateway.createBuilder();
       builder.identity(wallet, "user1");
       builder.networkConfig(networkConfigPath).discovery(true);

       // create a gateway connection
       try (Gateway gateway = builder.connect()) {
          System.out.println("Hello");
       }
       catch(Exception e) {
          e.printStackTrace();
     }
   }

当我运行代码时,它抛出错误

线程“main”java.lang.IllegalStateException中的异常:必须设置网关标识

请帮助我找到如何设置此网络的标识

我的联系人yaml是

name: basic-network
version: 1.0.0
client:
    organization: Org1
    connection:
        timeout:
            peer:
                endorser: '300'
            orderer: '300'
channels:
    mychannel:
        orderers:
        - orderer.example.com
        peers:
            peer0.org1.example.com: {}
organizations:
    Org1:
        mspid: Org1MSP
        peers:
        - peer0.org1.example.com
        certificateAuthorities:
        - ca.example.com
orderers:
    orderer.example.com:
        url: grpc://localhost:7050
peers:
    peer0.org1.example.com:
        url: grpc://localhost:7051
certificateAuthorities:
    ca.example.com:
        url: http://localhost:7054
        caName: ca.example.com


有一个名为
User1@org1.example.com
位于
基本网络/crypto-config/peerOrganizations/org1.example.com/users/
好的,我理解你的问题。您正在从织物样本中错误地运行fabcar示例

Java文件夹中有两个目录:walletsrc。 在src中,您将找到您的代码,而在wallet中,您将存储您的用户证书

在运行应用程序之前,您应该创建证书,而您目前没有证书。 在运行ClientApp.java的文件夹中,您应该找到另外两个文件:EnrollAdmin.javaRegisterUser.java

首先,运行EnrollAdmin.java。这将联系您的CA并获取管理员用户的证书。 接下来,运行RegisterUser.java创建用户证书

您的ClientApp当前正在寻找user1证书,但您的钱包文件夹中没有user1。 这样做之后,再次运行ClientApp.java,您应该会没事的。
在您的评论中,您提到了
User1@org1.example.com
基本网络/crypto-config/peerOrganizations/org1.example.com/users/中的文件夹,但是您不应该在本例中使用它,因为您需要SDK发布的X509证书与CA联系。

您可以使用调试模式并了解其功能吗启动此异常?你也可以发布你的连接吗?您是否首先生成了user1证书?@RicNtt
builder.connect()
函数抛出错误,我在问题描述中添加了详细信息。谢谢您的回答。我仍然对您关于X509证书回答的最后一部分有疑问,您的意思是此示例不支持X509证书吗?我必须在非X509认证网络中运行此应用程序?