Kotlin 为什么我得到null不能转换为非null类型net.corda.core.identity.Party错误和Oraclize?

Kotlin 为什么我得到null不能转换为非null类型net.corda.core.identity.Party错误和Oraclize?,kotlin,corda,Kotlin,Corda,我一直在尝试在我的CorDapp中实现Oraclize,我创建的流程工作得很好,但是当我尝试添加Oraclize查询时,我收到了一个错误:null不能转换为非null类型net.corda.core.identity.Party。这就是问题中的代码 val current = LocalDateTime.now().toString() val airplaneStatus = subFlow(OraclizeQueryAwaitFlow(

我一直在尝试在我的CorDapp中实现Oraclize,我创建的流程工作得很好,但是当我尝试添加Oraclize查询时,我收到了一个错误:null不能转换为非null类型net.corda.core.identity.Party。这就是问题中的代码

        val current = LocalDateTime.now().toString()
        val airplaneStatus = subFlow(OraclizeQueryAwaitFlow(
            datasource = "URL",
            query = "json(https://api.flightstats.com/flex/flightstatus/rest/v2/json/flight/status/" + flight.subSequence(0,2) + "/" + flight.subSequence(2, flight.length) + "/arr/" +
            current.subSequence(0,4) + "/" + current.subSequence(5,7) + "/" + current.subSequence(8,10) + "?appId=******&appKey=***********&utc=false).flightStatuses.status",
            proofType = ProofType.TLSNOTARY,
            delay = 1
        ))
航班是一个简单的航班ID,如AC345或WS9405。整个流程如下:

更新:我添加了
delay
参数,但错误仍然存在(尝试了0和1)。我还验证了
ProofType.TLSNOTARY
是否为非空

提前谢谢

日志错误报告:

[WARN ] 2018-07-10T16:08:00,619Z [Node thread-1] flow.[a0362ed5-74b5- 
4519-a80e-4adda70adca7].run - Terminated by unexpected exception {}
kotlin.TypeCastException: null cannot be cast to non-null type net.corda.core.identity.Party
at it.oraclize.cordapi.flows.OraclizeQueryAwaitFlow.call(OraclizeQueryAwaitFlow.kt:36) ~[InsureFlight-0.1.jar:?]
at it.oraclize.cordapi.flows.OraclizeQueryAwaitFlow.call(OraclizeQueryAwaitFlow.kt:18) ~[InsureFlight-0.1.jar:?]
at net.corda.core.flows.FlowLogic.subFlow(FlowLogic.kt:290) ~[corda-core-3.1-corda.jar:?]
at com.insureflight.flows.IssuePolicy$Initiator.call(IssuePolicy.kt:76) ~[cordapp-0.1.jar:?]
at com.insureflight.flows.IssuePolicy$Initiator.call(IssuePolicy.kt:37) ~[cordapp-0.1.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(Executors.java:511) [?:1.8.0_172]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_172]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_172]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_172]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_172]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_172]
at net.corda.node.utilities.AffinityExecutor$ServiceAffinityExecutor$1$thread$1.run(AffinityExecutor.kt:62) [corda-node-3.1-corda.jar:?]

您忘记了传递第四个参数,即参数
delay

OraclizeQueryAwaitFlow(val datasource: String,
                             val query: Any,
                             val proofType: Int = 0,
                             val delay: Int = 0) //here <------
OraclizeQueryAwaitFlow(val数据源:String,
val查询:任何,
val类型:Int=0,

val delay:Int=0)//此处从github上的库中Seing存储库以及您的日志错误(oraclizequeryawitflow.kt中的第36行,请参阅),我假定出现此问题是因为

  • 调用
    serviceHub.identityService.wellKnownPartyFromX500Name(OraclizeUtils.getNodeName())
    返回null
  • 要为
    参与方
    强制转换空值,但这是不可能的,会引发
    TypeCastException
我的建议 1。(建议)打开此存储库上的问题,询问此错误解决方案,并等待开发人员的响应,或


2.分叉此存储库,您验证此强制转换尝试并使用分叉存储库

您是否在公共测试网上加载了Cordapp?如果没有,那可能是问题所在,因为
identityService
无法到达我们的公共节点。我们目前正在开发一种用于在专用网络上进行测试的工具,但与此同时,您应该在连接到公共测试网的节点上加载cordapp。

我已通过延迟,但它仍然显示相同的错误。我尝试了0和1的延迟。val current=LocalDateTime.now()验证
ProofType.TLSNOTARY
是否为空。我已验证ProofType是否为非空,并且错误持续存在。请在此处记录错误!我会尝试一下,让你知道。看一下,Corda最近对testnest的评论是“注意,目前没有公共Corda testnet,因此我们目前没有运行许可服务”。然后我如何连接到公共测试网?也许他们忘了把它放在变更日志中,但是站在这里应该有一个来自
release-V2.0
的公共测试网。您使用的是哪一版本的corda?目前使用的是V3.1。目前,我们在公共测试网上支持V2.0。支持corda V3.1的API将在未来几天内发布,同时您能否与我们分享您的兼容区的
compatibilityZoneURL
,以便我们加入您的网络?请随时通过我们的公共频道联系我们