You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hyperledger Fabric安装Java链码遇内存错误及实例化失败求助

解决Java链码实例化时./build.sh: not found的问题

针对你遇到的这个问题,结合你提供的peer日志和操作背景,我来梳理下核心原因和对应的解决方案:

核心原因分析

从日志里的/bin/sh: 1: ./build.sh: not found可以明确看出:peer节点在尝试构建Java链码的Docker镜像时,找不到链码目录下的build.sh脚本——这个脚本是Fabric用来编译、打包Java链码的关键脚本,缺失或者路径不对都会触发这个报错。

具体解决方案

1. 确保链码目录中包含正确的build.sh脚本

Hyperledger Fabric的Java链码要求在链码根目录下存在build.sh脚本,用来执行Maven编译等构建操作。你需要:

  • 在你的Java链码根目录添加这个脚本,内容可以参考Fabric官方1.4.x版本的模板:
    #!/bin/bash
    set -e
    
    echo "Compiling Java chaincode..."
    mvn clean package -DskipTests
    
  • 给脚本添加执行权限:
    chmod +x build.sh
    
  • 重新将链码打包(如果是用目录方式安装,确保这个脚本在你指定的安装路径根目录下)。

2. 检查链码的目录结构是否符合要求

错误的目录结构会导致peer提取链码后找不到build.sh,正确的Java链码结构应该是这样的:

java_chaincode/
├── build.sh       # 必须在根目录
├── pom.xml        # Maven项目配置文件
└── src/
    └── main/
        └── java/
            └── com/yourorg/chaincode/
                └── YourChaincodeImpl.java  # 你的链码实现类

你之前执行安装命令时指定的路径github.com/hyperledger/chaincode/java/,要确保这个路径对应的目录就是上述的java_chaincode根目录,而不是嵌套的子目录。

3. 验证链码安装包的完整性

如果你是通过打包成tar.gz的方式安装链码,解压后检查是否包含build.sh脚本;如果是直接用本地目录路径安装,确认peer节点能访问到该目录下的build.sh(比如在Docker环境中,要确保目录已经正确挂载到peer容器内)。

4. 考虑Fabric版本的兼容性(针对1.4.0-rc2)

1.4.0-rc2是候选版本,可能存在一些小的兼容性问题。如果上述方案都无效,可以尝试升级到1.4.0正式版的Fabric镜像,正式版修复了候选版本中的一些已知问题,可能会解决这个构建脚本的路径识别问题。

额外验证步骤

在重新安装链码后,你可以先通过peer chaincode list --installed确认链码已经正确安装,然后再执行实例化命令,确保命令中的链码名称、版本、通道名称和你的安装信息一致(比如你安装时用的是-n java_chaincode,但实例化时用的是-n chaincode,这里要保持一致,避免不必要的错误)。

内容的提问来源于stack exchange,提问作者Bentipe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:58:13