当前位置: 首页 > 知识库问答 >
问题:

Corda:java.lang.IllegalArgumentException:此AttachmentWithContext未正确初始化

韦辰钊
2023-03-14

我们的项目中有一个不可替代代币状态和不可替代代币合约的自定义实现。我们正在使用下面的代码来发行我们的自定义不可替代代币。

        Party notary = NotaryUtilitiesKt.getPreferredNotary(getServiceHub(),NotaryUtilitiesKt.firstNotary());
        TransactionBuilder transactionBuilder = new TransactionBuilder(notary);
        IssueTokensUtilitiesKt.addIssueTokens(transactionBuilder, tokensToIssue);
        FlowUtilitiesKt.addTokenTypeJar(tokensToIssue, transactionBuilder);

当试图将上面获得的事务构建器转换为有线事务时(< code > builder . towiretransaction(service hub);)我们在下面的堆栈跟踪中得到一个错误。

java.lang.IllegalArgumentException: This AttachmentWithContext was not initialised properly. Please ensure all Corda contracts extending existing Corda contracts also implement the Contract base class.
    at net.corda.core.internal.AttachmentWithContext.<init>(AttachmentWithContext.kt:18)
    at net.corda.core.transactions.TransactionBuilder.handleContract(TransactionBuilder.kt:487)
    at net.corda.core.transactions.TransactionBuilder.selectContractAttachmentsAndOutputStateConstraints(TransactionBuilder.kt:359)
    at net.corda.core.transactions.TransactionBuilder.toWireTransactionWithContext(TransactionBuilder.kt:159)
    at net.corda.core.transactions.TransactionBuilder.toWireTransactionWithContext$core(TransactionBuilder.kt:146)
    at net.corda.core.transactions.TransactionBuilder.toWireTransaction(TransactionBuilder.kt:140)

共有1个答案

郑锋
2023-03-14

就像Alesandro说的,这个错误似乎指向一个契约类问题。

请确保所有扩展现有Corda合同的Corda合同也实施合同基类。

我会仔细检查您的合约类是否正确实现了合约。如下所示:

class IOUContract : Contract {
companion object {
    @JvmStatic
    val IOU_CONTRACT_ID = "net.corda.training.contracts.IOUContract"
}

来源:https://github.com/corda/samples-kotlin/blob/master/Advanced/obligation-cordapp/contracts-kotlin/src/main/kotlin/net/corda/training/contracts/IOUContract.kt

祝你好运!

 类似资料:
  • 问题内容: 我正在设置用于学习JavaEE7中CDI的基本环境。我有以下代码可以启动。只是启动和关闭。 我正在控制台上关注。 有问题的线是。这仅表示依赖注入将不起作用。但是我不确定是什么问题。我已经添加了。我什至没有达到初始化对象的目的,那为什么会出现这个问题呢? Weld的官方文档还给出了阅读此答案后得到的相同代码。“ Antonio Goncalves”撰写的“ Beginning Java

  • 问题内容: 将log4j添加到我的应用程序后,每次执行我的应用程序时,都会得到以下输出: 看来这意味着缺少配置文件。此配置文件应位于何处,什么是良好的入门内容? 我使用纯Java开发桌面应用程序。因此没有网络服务器等… 问题答案: 默认情况下,在上查找名为或的文件。 您可以按照此处所述通过设置系统属性来控制它用来初始化自身的文件(查找“默认初始化过程”部分)。 例如: 将导致在类路径上查找名为的文

  • 问题内容: 用RefluxJS异步初始化数据的正确方法是什么?是否有类似于AngularJS的解决方案,或者Flux的实现与此无关(路由器应该处理此职责)? 问题答案: 在应用程序的顶级组件中,使用方法(docs)触发获取数据的操作。最初渲染组件时将调用此方法。 例如:

  • 我正在使用spring Boot1.5.9编写一个小型rest服务器。我刚开始使用初始化代码,就被这种奇怪的行为卡住了。 我有个小测试- 最初,Application.Properties被忽略。在我添加了@SpringBootTest注释之后,application.properties被读取,但开始出现以下错误。 配置bean如下所示- 而且 我确实使用@EnableAutoConfigura

  • 问题内容: 这是错误消息- 这是该类中的调用- 这是我的log4j.properties文件的内容- 属性文件在类路径上。 一切对我来说都很好,这是怎么回事?如果不是门槛也可拍摄记录? 问题答案: 好了,所以我通过更改 对此 显然,您必须将日志记录级别指定为第一个?如果我浪费任何人的时间,我深表歉意。 另外,我决定回答我自己的问题,因为这不是类路径问题。