Hyperledger Fabric Java链码部署失败:NameResolver 'unix'地址类型不被支持
Hyperledger Fabric Java链码提交阶段失败问题排查
环境信息
- Hyperledger Fabric版本:2.5.4 / 2.5.10
- Java版本:11
- 项目类型:Maven工程
- 链码基础:基于官方资产转移Java链码及Fabric合约Maven示例
- 部署网络:fabric_test双组织测试网络(Org1、Org2)
部署流程与前置状态
已按官方部署流程完成以下步骤且全部成功:
- 链码打包
- 在Org1、Org2两个组织上安装链码
- 为两个组织完成链码审批
提交前执行就绪状态检查命令:
peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name mychaincodejava --version 1.0 --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" --output json
注:${PWD}指向test-network文件夹
检查输出结果:
{ "Approvals": { "Org1MSP": true, "Org2MSP": true } }
执行链码提交命令:
peer lifecycle chaincode commit -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name mychaincodejava --version 1.0 --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt"
提交阶段错误信息
执行提交命令后,通过./monitordocker.sh fabric_test监控到以下错误:
dev-peer0.org1.example.com-mychaincodejava-4e5..|Thread[main,5,main] 08:23:25:895 INFO org.hyperledger.fabric.contract.ContractRouter main Starting chaincode as client dev-peer0.org1.example.com-mychaincodejava-4e5..|Thread[main,5,main] 08:23:26:451 SEVERE org.hyperledger.fabric.contract.ContractRouter startRouting Address types of NameResolver 'unix' for 'peer0.org1.example.com:7052' not supported by transport dev-peer0.org1.example.com-mychaincodejava-4e5..|java.lang.IllegalArgumentException: Address types of NameResolver 'unix' for 'peer0.org1.example.com:7052' not supported by transport dev-peer0.org1.example.com-mychaincodejava-4e5..| at io.grpc.internal.ManagedChannelImplBuilder.getNameResolverProvider(ManagedChannelImplBuilder.java:849) dev-peer0.org1.example.com-mychaincodejava-4e5..| at io.grpc.internal.ManagedChannelImplBuilder.build(ManagedChannelImplBuilder.java:699) dev-peer0.org1.example.com-mychaincodejava-4e5..| at io.grpc.ForwardingChannelBuilder2.build(ForwardingChannelBuilder2.java:272) dev-peer0.org1.example.com-mychaincodejava-4e5..| at org.hyperledger.fabric.shim.impl.ChaincodeSupportClient.<init>(ChaincodeSupportClient.java:40) dev-peer0.org1.example.com-mychaincodejava-4e5..| at org.hyperledger.fabric.shim.ChaincodeBase.connectToPeer(ChaincodeBase.java:178) dev-peer0.org1.example.com-mychaincodejava-4e5..| at org.hyperledger.fabric.contract.ContractRouter.startRouting(ContractRouter.java:100) dev-peer0.org1.example.com-mychaincodejava-4e5..| at org.hyperledger.fabric.contract.ContractRouter.main(ContractRouter.java:177) dev-peer0.org1.example.com-mychaincodejava-4e5..| dev-peer0.org1.example.com-mychaincodejava-4e5..|Exception in thread "main" org.hyperledger.fabric.contract.ContractRuntimeException: Unable to start routing dev-peer0.org1.example.com-mychaincodejava-4e5..| at org.hyperledger.fabric.contract.ContractRouter.startRouting(ContractRouter.java:103) dev-peer0.org1.example.com-mychaincodejava-4e5..| at org.hyperledger.fabric.contract.ContractRouter.main(ContractRouter.java:177) dev-peer0.org1.example.com-mychaincodejava-4e5..|Caused by: java.lang.IllegalArgumentException: Address types of NameResolver 'unix' for 'peer0.org1.example.com:7052' not supported by transport dev-peer0.org1.example.com-mychaincodejava-4e5..| at io.grpc.internal.ManagedChannelImplBuilder.getNameResolverProvider(ManagedChannelImplBuilder.java:849) dev-peer0.org1.example.com-mychaincodejava-4e5..| at io.grpc.internal.ManagedChannelImplBuilder.build(ManagedChannelImplBuilder.java:699) dev-peer0.org1.example.com-mychaincodejava-4e5..| at io.grpc.ForwardingChannelBuilder2.build(ForwardingChannelBuilder2.java:272) dev-peer0.org1.example.com-mychaincodejava-4e5..| at org.hyperledger.fabric.shim.impl.ChaincodeSupportClient.<init>(ChaincodeSupportClient.java:40) dev-peer0.org1.example.com-mychaincodejava-4e5..| at org.hyperledger.fabric.shim.ChaincodeBase.connectToPeer(ChaincodeBase.java:178) dev-peer0.org1.example.com-mychaincodejava-4e5..| at org.hyperledger.fabric.contract.ContractRouter.startRouting(ContractRouter.java:100) dev-peer0.org1.example.com-mychaincodejava-4e5..| ... 1 more peer0.org2.example.com|2025-02-08 08:23:27.664 UTC 006e WARN [lifecycle] Work -> could not launch chaincode 'mychaincodejava:4e5e6ee3ddad97b25c131663cb0549bfe9625622e83577fc8c191e079f840fc1': chaincode registration failed: container exited with 1 peer0.org1.example.com|2025-02-08 08:23:27.664 UTC 0077 WARN [lifecycle] Work -> could not launch chaincode 'mychaincodejava:4e5e6ee3ddad97b25c131663cb0549bfe9625622e83577fc8c191e079f840fc1': chaincode registration failed: container exited with 1
已尝试的排查步骤
- 连通性检查:提交前所有容器运行正常,节点间可通信。
telnet peer0.org1.example.com 7052无法连接,但telnet 172.18.0.8 7052可连接。 - 链码环境变量验证:链码配置的节点地址(peer0.org1.example.com:7052、peer0.org2.example.com:9052)正确,test-network的yaml配置与官方示例一致。
- Docker网络排查:确认所有节点均处于
fabric_test网络内,容器名称配置正确。
内容的提问来源于stack exchange,提问作者minteck ui
相关产品推荐
相关产品推荐

