Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Serialization 在Corda V3.1中创建状态时发生java.io.NotSerializableException_Serialization_Deserialization_Corda - Fatal编程技术网

Serialization 在Corda V3.1中创建状态时发生java.io.NotSerializableException

Serialization 在Corda V3.1中创建状态时发生java.io.NotSerializableException,serialization,deserialization,corda,Serialization,Deserialization,Corda,从Corda V2迁移到Corda V3.1时。无法保存或创建状态,获取以下异常:未找到用于序列化的构造函数,但协定状态具有默认构造函数和参数化构造函数 [WARN ] 2018-04-12T17:40:09,773Z [Node thread-1] flow.[f1e07b24-6f07-4e2b-a9cf-c9f92c14985a].run - Terminated by unexpected exception {} java.io.NotSerializableException: ne

从Corda V2迁移到Corda V3.1时。无法保存或创建状态,获取以下异常:未找到用于序列化的构造函数,但协定状态具有默认构造函数和参数化构造函数

[WARN ] 2018-04-12T17:40:09,773Z [Node thread-1] flow.[f1e07b24-6f07-4e2b-a9cf-c9f92c14985a].run - Terminated by unexpected exception {}
java.io.NotSerializableException: net.corda.core.contracts.TransactionState -> data(net.corda.core.contracts.ContractState) -> No constructor for deserialization found for class com.demo.project.nodes.states.ContractState.
    at net.corda.nodeapi.internal.serialization.amqp.SerializationHelperKt.constructorForDeserialization(SerializationHelper.kt:50) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.ObjectSerializer.<init>(ObjectSerializer.kt:19) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializerFactory$makeClassSerializer$1.apply(SerializerFactory.kt:271) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializerFactory$makeClassSerializer$1.apply(SerializerFactory.kt:40) ~[corda-node-api-3.1-corda.jar:?]
    at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(Unknown Source) ~[?:1.8.0_161]
    at net.corda.nodeapi.internal.serialization.amqp.SerializerFactory.makeClassSerializer(SerializerFactory.kt:255) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializerFactory.get(SerializerFactory.kt:100) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializationOutput.writeObject$node_api(SerializationOutput.kt:98) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializationOutput.writeObjectOrNull$node_api(SerializationOutput.kt:93) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.PropertySerializer$DescribedTypePropertySerializer.writeProperty(PropertySerializer.kt:84) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.ObjectSerializer$writeObject$$inlined$ifThrowsAppend$lambda$1$1.invoke(ObjectSerializer.kt:66) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.ObjectSerializer$writeObject$$inlined$ifThrowsAppend$lambda$1$1.invoke(ObjectSerializer.kt:17) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializationHelperKt.withList(SerializationHelper.kt:401) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.ObjectSerializer$writeObject$$inlined$ifThrowsAppend$lambda$1.invoke(ObjectSerializer.kt:64) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.ObjectSerializer$writeObject$$inlined$ifThrowsAppend$lambda$1.invoke(ObjectSerializer.kt:17) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializationHelperKt.withDescribed(SerializationHelper.kt:390) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.ObjectSerializer.writeObject(ObjectSerializer.kt:62) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializationOutput.writeObject$node_api(SerializationOutput.kt:106) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializationOutput.writeObject$node_api$default(SerializationOutput.kt:97) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializationOutput.writeObject$node_api(SerializationOutput.kt:78) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializationOutput$_serialize$1$1.invoke(SerializationOutput.kt:64) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializationOutput$_serialize$1$1.invoke(SerializationOutput.kt:22) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializationHelperKt.withList(SerializationHelper.kt:401) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializationOutput$_serialize$1.invoke(SerializationOutput.kt:63) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializationOutput$_serialize$1.invoke(SerializationOutput.kt:22) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializationHelperKt.withDescribed(SerializationHelper.kt:390) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializationOutput._serialize$node_api(SerializationOutput.kt:62) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.SerializationOutput.serialize(SerializationOutput.kt:36) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.amqp.AbstractAMQPSerializationScheme.serialize(AMQPSerializationScheme.kt:128) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$serialize$1$1.invoke(SerializationScheme.kt:126) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$serialize$1$1.invoke(SerializationScheme.kt:86) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.core.serialization.SerializationFactory.withCurrentContext(SerializationAPI.kt:66) ~[corda-core-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$serialize$1.invoke(SerializationScheme.kt:126) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$serialize$1.invoke(SerializationScheme.kt:86) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.core.serialization.SerializationFactory.asCurrent(SerializationAPI.kt:80) ~[corda-core-3.1-corda.jar:?]
    at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl.serialize(SerializationScheme.kt:126) ~[corda-node-api-3.1-corda.jar:?]
    at net.corda.core.serialization.SerializationAPIKt.serialize(SerializationAPI.kt:221) ~[corda-core-3.1-corda.jar:?]
    at net.corda.core.serialization.SerializationAPIKt.serialize$default(SerializationAPI.kt:220) ~[corda-core-3.1-corda.jar:?]
    at net.corda.core.transactions.WireTransaction$Companion.createComponentGroups(WireTransaction.kt:242) ~[corda-core-3.1-corda.jar:?]
    at net.corda.core.transactions.TransactionBuilder$toWireTransactionWithContext$1.invoke(TransactionBuilder.kt:114) ~[corda-core-3.1-corda.jar:?]
    at net.corda.core.transactions.TransactionBuilder$toWireTransactionWithContext$1.invoke(TransactionBuilder.kt:36) ~[corda-core-3.1-corda.jar:?]
    at net.corda.core.serialization.SerializationFactory.withCurrentContext(SerializationAPI.kt:66) ~[corda-core-3.1-corda.jar:?]
    at net.corda.core.transactions.TransactionBuilder.toWireTransactionWithContext$core(TransactionBuilder.kt:113) ~[corda-core-3.1-corda.jar:?]
    at net.corda.core.transactions.TransactionBuilder.toWireTransactionWithContext$core$default(TransactionBuilder.kt:97) ~[corda-core-3.1-corda.jar:?]
    at net.corda.core.transactions.TransactionBuilder.toWireTransaction(TransactionBuilder.kt:95) ~[corda-core-3.1-corda.jar:?]
    at net.corda.core.transactions.TransactionBuilder.toLedgerTransaction(TransactionBuilder.kt:135) ~[corda-core-3.1-corda.jar:?]
    at net.corda.core.transactions.TransactionBuilder.verify(TransactionBuilder.kt:143) ~[corda-core-3.1-corda.jar:?]
    at com.demo.project.nodes.initiators.ContractStateFlowInitiator.call(ContractStateFlowInitiator.java:54) ~[project-node-1.0.jar:?]
    at com.demo.project.nodes.initiators.ContractStateFlowInitiator.call(ContractStateFlowInitiator.java:25) ~[project-node-1.0.jar:?]
    at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:96) [corda-node-3.1-corda.jar:?]
    at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:44) [corda-node-3.1-corda.jar:?]
    at co.paralleluniverse.fibers.Fiber.run1(Fiber.java:1092) [quasar-core-0.7.9-jdk8.jar:0.7.9]
    at co.paralleluniverse.fibers.Fiber.exec(Fiber.java:788) [quasar-core-0.7.9-jdk8.jar:0.7.9]
    at co.paralleluniverse.fibers.RunnableFiberTask.doExec(RunnableFiberTask.java:100) [quasar-core-0.7.9-jdk8.jar:0.7.9]
    at co.paralleluniverse.fibers.RunnableFiberTask.run(RunnableFiberTask.java:91) [quasar-core-0.7.9-jdk8.jar:0.7.9]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_161]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_161]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source) [?:1.8.0_161]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [?:1.8.0_161]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_161]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_161]
    at net.corda.node.utilities.AffinityExecutor$ServiceAffinityExecutor$1$thread$1.run(AffinityExecutor.kt:62) [corda-node-3.1-corda.jar:?] 

在ContractStateFlowInitiator类中验证协定时出错:txBuilder.verify(getServiceHub())

在2.0版本中一切正常


即使使用corda版本3.0,错误仍然存在。我尝试将我的状态com.demo.project.nodes.states.ContractState重命名为com.demo.project.nodes.states.DemoContractState也在状态中创建了默认构造函数,但没有成功

@ConstructorForDeserialization

尽管java文档提到使用注释[@CordaConstructor]——java文档需要在SerializationHelper.Kt中更新

在某些情况下,还可以看到公证人也应该拥有共享项目

还要确保将-parmeters添加到所有子项目中 例如:

子项目{
tasks.withType(JavaCompile){

options.compilerArgs用@ConstructorForDeserialization

尽管java文档提到使用注释[@CordaConstructor]——java文档需要在SerializationHelper.Kt中更新

在某些情况下,还可以看到公证人也应该拥有共享项目

还要确保将-parmeters添加到所有子项目中 例如:

子项目{
tasks.withType(JavaCompile){

options.compilerArgs我也没有使用正在使用V2的V3源代码。 同样的异常也发生了。 我认为StackTrace的内容有些不同,但我认为它会有所帮助


我也没有使用在V2上工作的V3源代码。 同样的异常也发生了。 我认为StackTrace的内容有些不同,但我认为它会有所帮助


除了上面提到的在类的构造函数上添加@ConstructorForDeserialization的解决方案之外,我们还需要对IDE设置进行一些更改

修复:在IntelliJ中:

Open the settings:
Windows: File -> Settings
osX: IntelliJ IDEA -> Preferences...
Go to Build, Execution, Deployment -> Compiler -> Java Compiler
Write -parameters in the Additional command line parameters field
Completely rebuild the project (Build -> Rebuild Project)
参考此corda训练营链接:


除了上面提到的在类的构造函数上添加@ConstructorForDeserialization的解决方案之外,我们还需要对IDE设置进行一些更改

修复:在IntelliJ中:

Open the settings:
Windows: File -> Settings
osX: IntelliJ IDEA -> Preferences...
Go to Build, Execution, Deployment -> Compiler -> Java Compiler
Write -parameters in the Additional command line parameters field
Completely rebuild the project (Build -> Rebuild Project)
参考此corda训练营链接:

Open the settings:
Windows: File -> Settings
osX: IntelliJ IDEA -> Preferences...
Go to Build, Execution, Deployment -> Compiler -> Java Compiler
Write -parameters in the Additional command line parameters field
Completely rebuild the project (Build -> Rebuild Project)