首页 > 解决方案 > Corda4 上的 Corda Settler

问题描述

我将 Corda-Settler 升级到 Corda 4 版本,并添加了波纹库ripple-core 和ripple-bouncycastle,以使其独立于本地安装。部署节点时,出现以下错误:

[ERROR] 2019-02-12T11:02:31,343Z [main] internal.Node.installCordaServices - Corda service com.r3.corda.finance.obligation.oracle.services.XrpOracleService failed to instantiate. Reason was: No configuration setting found for key 'nodes' [errorCode=n3sk62, moreInformationAt=https://errors.corda.net/OS/4.0-RC03/n3sk62]
com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'nodes'
    at com.typesafe.config.impl.SimpleConfig.findKeyOrNull(SimpleConfig.java:152) ~[corda.jar:?]
    at com.typesafe.config.impl.SimpleConfig.findOrNull(SimpleConfig.java:170) ~[corda.jar:?]
    at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:184) ~[corda.jar:?]
    at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:189) ~[corda.jar:?]
    at com.typesafe.config.impl.SimpleConfig.getList(SimpleConfig.java:258) ~[corda.jar:?]
    at com.typesafe.config.impl.SimpleConfig.getHomogeneousUnwrappedList(SimpleConfig.java:329) ~[corda.jar:?]
    at com.typesafe.config.impl.SimpleConfig.getStringList(SimpleConfig.java:387) ~[corda.jar:?]
    at com.r3.corda.finance.obligation.oracle.services.XrpOracleService$nodes$2.invoke(XrpOracleService.kt:22) ~[?:?]
    at com.r3.corda.finance.obligation.oracle.services.XrpOracleService$nodes$2.invoke(XrpOracleService.kt:19) ~[?:?]
    at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) ~[kotlin-stdlib-1.2.71.jar:1.2.71-release-64 (1.2.71)]
    at com.r3.corda.finance.obligation.oracle.services.XrpOracleService.getNodes(XrpOracleService.kt) ~[?:?]
    at com.r3.corda.finance.obligation.oracle.services.XrpOracleService.<init>(XrpOracleService.kt:24) ~[?:?]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_191]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_191]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_191]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_191]
    at net.corda.node.internal.AbstractNode.installCordaService(AbstractNode.kt:649) ~[corda-node-4.0-RC03.jar:?]
    at net.corda.node.internal.AbstractNode.installCordaServices(AbstractNode.kt:579) ~[corda-node-4.0-RC03.jar:?]
    at net.corda.node.internal.AbstractNode.access$installCordaServices(AbstractNode.kt:118) ~[corda-node-4.0-RC03.jar:?]
    at net.corda.node.internal.AbstractNode$start$7.invoke(AbstractNode.kt:380) ~[corda-node-4.0-RC03.jar:?]
    at net.corda.node.internal.AbstractNode$start$7.invoke(AbstractNode.kt:118) ~[corda-node-4.0-RC03.jar:?]
    at net.corda.nodeapi.internal.persistence.CordaPersistence.inTopLevelTransaction(CordaPersistence.kt:227) ~[corda-node-api-4.0-RC03.jar:?]
    at net.corda.nodeapi.internal.persistence.CordaPersistence.transaction(CordaPersistence.kt:212) ~[corda-node-api-4.0-RC03.jar:?]
    at net.corda.nodeapi.internal.persistence.CordaPersistence.transaction(CordaPersistence.kt:190) ~[corda-node-api-4.0-RC03.jar:?]
    at net.corda.nodeapi.internal.persistence.CordaPersistence.transaction(CordaPersistence.kt:196) ~[corda-node-api-4.0-RC03.jar:?]
    at net.corda.node.internal.AbstractNode.start(AbstractNode.kt:369) ~[corda-node-4.0-RC03.jar:?]
    at net.corda.node.internal.Node.start(Node.kt:419) ~[corda-node-4.0-RC03.jar:?]
    at net.corda.node.internal.NodeStartup.startNode(NodeStartup.kt:180) ~[corda-node-4.0-RC03.jar:?]
    at net.corda.node.internal.NodeStartupCli$runProgram$2.run(NodeStartup.kt:109) ~[corda-node-4.0-RC03.jar:?]
    at net.corda.node.internal.NodeStartup$initialiseAndRun$5.invoke(NodeStartup.kt:161) ~[corda-node-4.0-RC03.jar:?]
    at net.corda.node.internal.NodeStartup$initialiseAndRun$5.invoke(NodeStartup.kt:116) ~[corda-node-4.0-RC03.jar:?]
    at net.corda.node.internal.NodeStartupLogging$DefaultImpls.attempt(NodeStartup.kt:445) ~[corda-node-4.0-RC03.jar:?]
    at net.corda.node.internal.NodeStartup.attempt(NodeStartup.kt:116) ~[corda-node-4.0-RC03.jar:?]
    at net.corda.node.internal.NodeStartup.initialiseAndRun(NodeStartup.kt:159) ~[corda-node-4.0-RC03.jar:?]
    at net.corda.node.internal.NodeStartupCli.runProgram(NodeStartup.kt:107) ~[corda-node-4.0-RC03.jar:?]
    at net.corda.cliutils.CordaCliWrapper.call(CordaCliWrapper.kt:184) ~[corda-tools-cliutils-4.0-RC03.jar:?]
    at net.corda.cliutils.CordaCliWrapper.call(CordaCliWrapper.kt:152) ~[corda-tools-cliutils-4.0-RC03.jar:?]
    at picocli.CommandLine.execute(CommandLine.java:1056) ~[picocli-3.8.0.jar:3.8.0]
    at picocli.CommandLine.access$900(CommandLine.java:142) ~[picocli-3.8.0.jar:3.8.0]
    at picocli.CommandLine$RunLast.handle(CommandLine.java:1246) ~[picocli-3.8.0.jar:3.8.0]
    at picocli.CommandLine$RunLast.handle(CommandLine.java:1214) ~[picocli-3.8.0.jar:3.8.0]
    at picocli.CommandLine$AbstractParseResultHandler.handleParseResult(CommandLine.java:1122) ~[picocli-3.8.0.jar:3.8.0]
    at picocli.CommandLine.parseWithHandlers(CommandLine.java:1405) ~[picocli-3.8.0.jar:3.8.0]
    at net.corda.cliutils.CordaCliWrapperKt.start(CordaCliWrapper.kt:72) ~[corda-tools-cliutils-4.0-RC03.jar:?]
    at net.corda.node.Corda.main(Corda.kt:13) ~[corda-node-4.0-RC03.jar:?]
[INFO ] 2019-02-12T11:02:31,343Z [main] internal.Node.installCordaService - Installed com.r3.corda.finance.ripple.services.XRPService Corda service
[INFO ] 2019-02-12T11:02:31,390Z [main] vault.NodeVaultService.oldStatesPresent - Checking for states in vault from a previous version
[INFO ] 2019-02-12T11:02:31,406Z [main] vault.NodeVaultService.oldStatesPresent - Finished checking for old states. Old states present: false
[INFO ] 2019-02-12T11:02:34,076Z [main] statemachine.SingleThreadedStateMachineManager.invoke - Node ready, info: NodeInfo(addresses=[localhost:10011], legalIdentitiesAndCerts=[O=Oracle, L=New York, C=US], platformVersion=4, serial=1549969092158)
[INFO ] 2019-02-12T11:02:34,716Z [main] BasicInfo.printBasicNodeInfo - Loaded 6 CorDapp(s)                     : Combined CorDapp: Contract CorDapp: Corda Finance Demo version 1 by vendor R3 with licence Open Source (Apache 2), Workflow CorDapp: Corda Finance Demo version 1 by vendor R3 with licence Open Source (Apache 2), Combined CorDapp: Contract CorDapp: my contract name version 1 by vendor my company with licence my licence, Workflow CorDapp: my workflow name version 1 by vendor my company with licence my licence, Combined CorDapp: Contract CorDapp: my contract name version 1 by vendor my company with licence my licence, Workflow CorDapp: my workflow name version 1 by vendor my company with licence my licence, CorDapp cordapp-contracts-states-0.1 version Unknown by Unknown with licence Unknown, CorDapp oracle-0.1 version Unknown by Unknown with licence Unknown, CorDapp ripple-0.1 version Unknown by Unknown with licence Unknown
[WARN ] 2019-02-12T11:02:34,716Z [main] internal.Node.logLoadedCorDapps - Found 3 CorDapp(s) with unknown information. They will be unable to run on Corda in the future.
[INFO ] 2019-02-12T11:02:34,747Z [Node thread-1] internal.Node.registerJmxReporter - Registering JMX reporter:
[INFO ] 2019-02-12T11:02:34,763Z [Node thread-1] internal.Node.registerJolokiaReporter - Registering Jolokia JMX reporter:
[INFO ] 2019-02-12T11:02:34,794Z [main] BasicInfo.printBasicNodeInfo - Node for "Oracle" started up and registered in 151.81 sec
[INFO ] 2019-02-12T11:02:34,794Z [main] rpc.RPCServer.start - Starting RPC server with configuration RPCServerConfiguration(rpcThreadPoolSize=4, reapInterval=PT1S, deduplicationCacheExpiry=PT24H)

我既没有触及 oracle 的构建文件,也没有触及相应的类或 xrp.conf。我很感激任何帮助!提前谢谢了!

标签: corda

解决方案


这是我的解决方案:在com.r3.corda.finance.obligation.oracle.services.XrpOracleService代码的小改动是必要的,ClassLoader 的添加起到了神奇的作用

private val nodes by lazy { ConfigFactory.parseResources(javaClass.getClassLoader(), configFileName).getStringList("nodes").mapNotNull(::URI) }
+    //private val nodes by lazy { ConfigFactory.parseResources(configFileName).getStringList("nodes").mapNotNull(::URI) }


推荐阅读