【问题标题】:Corda jar launching: Address already in use: bind errorCorda jar 启动:地址已在使用中:绑定错误
【发布时间】:2019-03-11 17:37:40
【问题描述】:

我在 Kotlin 中有完美运行的 Corda 应用程序 - 从 IDE 启动时它会启动并正常运行

但是当我尝试将其构建为 jar 文件时,它会因以下错误而崩溃

信息:启动 SSHD 信息 2019 年 11 月 8:28:27 PM org.crsh.ssh.SSHPlugin init 信息:启动 SSHD 信息 2019 年 11 月 8:28:28 PM org.crsh.ssh.term.SSHLifeCycle 初始化 信息:即将启动 CRaSSHD 信息 2019 年 11 月 8:28:28 PM org.crsh.ssh.term.SSHLifeCycle 初始化 信息:即将启动 CRaSSHD 信息 2019 年 11 月 8:28:28 PM org.crsh.ssh.term.SSHLifeCycle 初始化 严重:无法启动 CRaSSHD java.net.BindException:地址已在使用:绑定 在 sun.nio.ch.Net.bind0(本机方法) 在 sun.nio.ch.Net.bind(未知来源) 在 sun.nio.ch.Net.bind(未知来源) 在 sun.nio.ch.AsynchronousServerSocketChannelImpl.bind(未知来源) 在 org.apache.sshd.common.io.nio2.Nio2Acceptor.bind(Nio2Acceptor.java:63) 在 org.apache.sshd.common.io.nio2.Nio2Acceptor.bind(Nio2Acceptor.java:87) 在 org.apache.sshd.server.SshServer.start(SshServer.java:325) 在 org.crsh.ssh.term.SSHLifeCycle.init(SSHLifeCycle.java:182) 在 org.crsh.ssh.SSHPlugin.init(SSHPlugin.java:192) 在 org.crsh.plugin.PluginManager.getPlugins(PluginManager.java:83) 在 org.crsh.plugin.PluginContext.start(PluginContext.java:327) 在 org.crsh.plugin.PluginLifeCycle.start(PluginLifeCycle.java:104) 在 net.corda.node.shell.InteractiveShell$ShellLifecycle.start(InteractiveShell.kt:181) 在 net.corda.node.shell.InteractiveShell.startShell(InteractiveShell.kt:118) 在 net.corda.node.internal.AbstractNode.startShell(AbstractNode.kt:297) 在 net.corda.node.internal.AbstractNode$start$4.invoke(AbstractNode.kt:262) 在 net.corda.node.internal.AbstractNode$start$4.invoke(AbstractNode.kt:105) 在 net.corda.node.internal.AbstractNode$initialiseDatabasePersistence$2.invoke(AbstractNode.kt:700) 在 net.corda.node.internal.AbstractNode$initialiseDatabasePersistence$2.invoke(AbstractNode.kt:105) 在 net.corda.nodeapi.internal.persistence.CordaPersistence.inTopLevelTransaction(CordaPersistence.kt:152) 在 net.corda.nodeapi.internal.persistence.CordaPersistence.transaction(CordaPersistence.kt:138) 在 net.corda.nodeapi.internal.persistence.CordaPersistence.transaction(CordaPersistence.kt:124) 在 net.corda.nodeapi.internal.persistence.CordaPersistence.transaction(CordaPersistence.kt:131) 在 net.corda.node.internal.AbstractNode.initialiseDatabasePersistence (AbstractNode.kt:699) 在 net.corda.node.internal.Node.initialiseDatabasePersistence(Node.kt:347) 在 net.corda.node.internal.AbstractNode.start(AbstractNode.kt:207) 在 net.corda.node.internal.Node.start(Node.kt:361) 在 net.corda.testing.node.internal.DriverDSLImpl$Companion$startInProcessNode$1.invoke(DriverDSLImpl.kt:805) 在 net.corda.testing.node.internal.DriverDSLImpl$Companion$startInProcessNode$1.invoke(DriverDSLImpl.kt:767) 在 net.corda.core.internal.concurrent.ValueOrException$DefaultImpls.capture(CordaFutureImpl.kt:107) 在 net.corda.core.internal.concurrent.OpenFuture$DefaultImpls.capture(CordaFutureImpl.kt) 在 net.corda.core.internal.concurrent.CordaFutureImpl.capture(CordaFutureImpl.kt:119) 在 net.corda.core.internal.concurrent.CordaFutureImplKt$fork$$inlined$also$lambda$1.run(CordaFutureImpl.kt:22) 在 java.util.concurrent.Executors$RunnableAdapter.call(未知来源) 在 java.util.concurrent.FutureTask.run(未知来源) 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(未知来源) 在 java.util.concurrent.ScheduledThreadPoolExecutor$Sche..(未知来源) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源) 在 java.lang.Thread.run(未知来源)

我只启动了一个节点,似乎没有进程可以干扰程序的执行(同样,从 IDE 启动时它工作正常)

【问题讨论】:

  • 如果您提供导致错误的代码而不是异常回溯,将会很有帮助。您使用的操作系统也可能很重要。
  • val rpcUsers = listOf(User("user1", "test", permissions = setOf("ALL"))) driver(DriverParameters(startNodesInProcess = true, waitForAllNodesToFinish = true)) { startNode(providedName = CordaX500Name("PartyG", "New York", "US"), rpcUsers = rpcUsers).getOrThrow() } 有问题的代码。我想它应该启动一个节点,但在内部某处失败。操作系统是 Windows 10
  • 您是否意识到您可以编辑问题?问题(和答案)中的代码格式比 cmets 中的要好得多。并且:如果它是问题的一部分,请将其添加到问题中!

标签: java kotlin jar corda


【解决方案1】:

Address already in use 可能意味着另一个程序正在使用此端口。确保您的代码只有 1 个实例同时运行。另外,尝试更改它正在使用的端口或使用此端口查找程序

【讨论】:

  • 困难的部分是我无法检查程序尝试使用的端口,因为它在 Corda 库函数内部失败。并且可以使用我们手动设置的端口,因为当我们从 IDE 运行它时它可以工作
  • 那么这意味着你必须找到 Corda 使用的端口,在这里你可以做的不多
猜你喜欢
  • 2023-03-28
  • 2011-01-09
  • 2016-10-24
  • 2012-05-02
  • 2020-10-06
  • 1970-01-01
相关资源
最近更新 更多