0

通过商业论文教程,我继续尝试将 java 应用程序实现到 Android 模拟器。

Issue.java 上,当调用Network network = gateway.getNetwork("mychannel");发生错误时:IllegalArgumentException: No peers provided

由于网络参数getChaincodeQueryPeersForOrganization(DefaultQueryHandlers.java:50),他不给我一个同行的集合并导致错误SingleQueryHandler.java:29

我想到了connection-org2.yaml文件,但看不出有什么问题。(默认 Java 应用程序无法正常工作)

我怎样才能给正确的网络,正确的同伴?

完全错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: iti.paper.ch.paper_test, PID: 9568
    java.lang.IllegalArgumentException: No peers provided
        at org.hyperledger.fabric.gateway.impl.query.SingleQueryHandler.<init>(SingleQueryHandler.java:29)
        at org.hyperledger.fabric.gateway.DefaultQueryHandlers.lambda$static$0(DefaultQueryHandlers.java:30)
        at org.hyperledger.fabric.gateway.-$$Lambda$DefaultQueryHandlers$A9xv6yy6Ls07YnjWxZKkScD7PTQ.create(Unknown Source:0)
        at org.hyperledger.fabric.gateway.DefaultQueryHandlers.create(DefaultQueryHandlers.java:73)
        at org.hyperledger.fabric.gateway.impl.NetworkImpl.<init>(NetworkImpl.java:54)
        at org.hyperledger.fabric.gateway.impl.GatewayImpl.getNetwork(GatewayImpl.java:252)
        at iti.paper.ch.paper_test.Issue.main(Issue.java:56)
        at iti.paper.ch.paper_test.MainActivity$1.onClick(MainActivity.java:29)
4

1 回答 1

0

您的 SDK 使用 connection-org2.yaml 在客户端很大程度上填充网络视图。如果随后有任何更改,其余部分由服务发现处理。

话虽如此,您应该在您的连接配置文件 ( connection-org2.yaml )中添加您的频道详细信息并指定对等方的角色。您看到的错误与没有使用链代码查询角色定义的对等点有关。您可以通过修改连接配置文件并包含与此类似的详细信息来做到这一点。

  channels: //name if the channel
    mychannel:
     peers:
      peer0.org2.example.com:
       endorsingPeer: false //this is a role
       chaincodeQuery: true //this is a role
       discover: true // this is a role
      peer1.org2.example.com:
       endorsingPeer: false
       chaincodeQuery: true
       discover: true

试试这个并重新启动您的网络。请记住,默认脚本还将使用模板重新生成任何连接配置文件。

于 2020-07-08T16:42:40.900 回答