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

教程第三步执行composer archive命令遇TypeNotFoundException错误

解决Composer Archive命令的TypeNotFoundException错误

我来帮你拆解这个问题——你遇到的TypeNotFoundException: Type ChangeAssetValue is not defined in namespace org.acme.biznet错误,本质是Hyperledger Composer在你的业务网络定义中找不到指定的ChangeAssetValue类型,大概率是模型定义或项目结构出了小疏漏,下面是逐一排查的步骤:

  • 检查CTO模型文件的类型定义
    首先确认你的业务网络models目录下的CTO文件中,在org.acme.biznet命名空间下是否正确定义了ChangeAssetValue类型(不管是交易、资产还是参与者类型)。比如如果是交易类型,代码应该类似这样:

    namespace org.acme.biznet
    
    transaction ChangeAssetValue {
      --> Asset targetAsset
      o Double newValue
    }
    

    注意大小写完全敏感,拼写必须和报错里的ChangeAssetValue完全一致。

  • 确认模型文件的位置
    要保证包含ChangeAssetValue定义的CTO文件放在业务网络根目录下的models文件夹里——Composer只会自动扫描这个目录下的模型文件,如果文件放错了位置(比如直接放在根目录),就会导致类型无法被识别。

  • 核对业务网络的目录结构
    你的项目结构必须符合Hyperledger Composer的标准规范,大致应该是这样:

    your-biznet-project/
    ├── package.json
    ├── models/
    │   └── your-model-file.cto
    ├── logic/
    │   └── transaction-logic.js
    └── permissions.acl
    

    如果models目录名拼写错误(比如写成model),或者文件层级不对,也会触发这个错误。

  • 清理缓存后重新执行命令
    有时候之前生成的缓存文件会干扰新的定义,先执行清理命令:

    composer clean
    

    清理完成后再重新运行composer archive create -t dir -n .命令试试。

  • 检查逻辑文件中的命名空间引用
    如果你写了交易逻辑JS文件,要确保里面引用ChangeAssetValue时的命名空间和CTO文件一致,比如不要把org.acme.biznet.ChangeAssetValue写成org.acme.biznet.changeAssetValue(大小写错误)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:32:06