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

如何为依赖CorDapp类的独立及RPC Corda客户端引入依赖?

嘿,针对你开发的这两类Corda客户端,我来给你拆解下具体怎么引入依赖,分两种情况说的明明白白:

1. 依赖CorDapp类的独立Corda客户端

这类客户端因为要直接用到CorDapp里的状态、合约、甚至流的类,属于和CorDapp强耦合的场景,依赖引入可以这么做:

  • 如果你的客户端和CorDapp是多模块项目,直接在客户端模块的build.gradle里添加本地模块依赖:
dependencies {
    // 替换成你的CorDapp模块名称
    implementation project(':your-cordapp-module')
    // 别忘了引入Corda核心依赖,版本要和节点一致
    implementation 'net.corda:corda-core:4.9'
    implementation 'net.corda:corda-node-api:4.9'
}
  • 如果CorDapp已经发布到本地仓库或者内部私服,就用坐标引入:
dependencies {
    implementation 'com.yourcompany:your-cordapp:1.0.0'
    implementation 'net.corda:corda-core:4.9'
    implementation 'net.corda:corda-node-api:4.9'
}

运行前记得用shadowJar插件把所有依赖打包成一个fat jar,不然运行时会出现类找不到的问题。

2. 依赖独立CorDapp状态类的Corda RPC客户端

这类客户端是通过RPC和节点交互,但需要CorDapp的状态类来序列化/反序列化数据,这里更推荐抽离共享模块的方式,避免引入冗余代码:

  1. 先把CorDapp中需要共享的状态、合约、常量等类,抽成一个独立的cordapp-contracts-states模块,这个模块只依赖Corda Core,不要包含流、节点逻辑这些不需要客户端用到的代码。
  2. 在RPC客户端的build.gradle里引入这个共享模块和Corda RPC依赖:
dependencies {
    // 引入共享的状态合约模块
    implementation 'com.yourcompany:cordapp-contracts-states:1.0.0'
    // Corda RPC核心依赖,版本必须和节点匹配
    implementation 'net.corda:corda-rpc:4.9'
}

要是暂时没法抽离共享模块,也可以直接引入整个CorDapp的依赖,但不建议这么做——会把流的代码、节点依赖都带进来,不仅增大客户端体积,还可能引发依赖冲突。

通用注意事项

  • 版本一致性:客户端用的所有Corda依赖版本,必须和节点运行的Corda版本完全一致,不然会出现序列化失败、RPC通信异常等问题。
  • 序列化配置:确保你的状态类已经正确实现ContractState,并且添加了@CordaSerializable注解,不然客户端没法正确解析节点返回的数据。
  • 打包运行:不管是哪种客户端,都可以用Gradle的shadowJar插件打包成可执行的fat jar,或者用application插件生成直接运行的脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:10:56