У меня есть прекрасно работающее приложение Corda в Kotlin - оно запускается и нормально работает при запуске из IDE
Но когда я пытаюсь создать его как файл jar, он вылетает со следующей ошибкой
INFO: Booting SSHD
INFO 11, 2019 8:28:27 PM org.crsh.ssh.SSHPlugin init
INFO: Booting SSHD
INFO 11, 2019 8:28:28 PM org.crsh.ssh.term.SSHLifeCycle init
INFO: About to start CRaSSHD
INFO 11, 2019 8:28:28 PM org.crsh.ssh.term.SSHLifeCycle init
INFO: About to start CRaSSHD
INFO 11, 2019 8:28:28 PM org.crsh.ssh.term.SSHLifeCycle init
SEVERE: Could not start CRaSSHD
java.net.BindException: Address already in use: bind
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Unknown Source)
at sun.nio.ch.Net.bind(Unknown Source)
at sun.nio.ch.AsynchronousServerSocketChannelImpl.bind(Unknown Source)
at org.apache.sshd.common.io.nio2.Nio2Acceptor.bind(Nio2Acceptor.java:63)
at org.apache.sshd.common.io.nio2.Nio2Acceptor.bind(Nio2Acceptor.java:87)
at org.apache.sshd.server.SshServer.start(SshServer.java:325)
at org.crsh.ssh.term.SSHLifeCycle.init(SSHLifeCycle.java:182)
at org.crsh.ssh.SSHPlugin.init(SSHPlugin.java:192)
at org.crsh.plugin.PluginManager.getPlugins(PluginManager.java:83)
at org.crsh.plugin.PluginContext.start(PluginContext.java:327)
at org.crsh.plugin.PluginLifeCycle.start(PluginLifeCycle.java:104)
at net.corda.node.shell.InteractiveShell$ShellLifecycle.start(InteractiveShell.kt:181)
at net.corda.node.shell.InteractiveShell.startShell(InteractiveShell.kt:118)
at net.corda.node.internal.AbstractNode.startShell(AbstractNode.kt:297)
at net.corda.node.internal.AbstractNode$start$4.invoke(AbstractNode.kt:262)
at net.corda.node.internal.AbstractNode$start$4.invoke(AbstractNode.kt:105)
at net.corda.node.internal.AbstractNode$initialiseDatabasePersistence$2.invoke(AbstractNode.kt:700)
at net.corda.node.internal.AbstractNode$initialiseDatabasePersistence$2.invoke(AbstractNode.kt:105)
at net.corda.nodeapi.internal.persistence.CordaPersistence.inTopLevelTransaction(CordaPersistence.kt:152)
at net.corda.nodeapi.internal.persistence.CordaPersistence.transaction(CordaPersistence.kt:138)
at net.corda.nodeapi.internal.persistence.CordaPersistence.transaction(CordaPersistence.kt:124)
at net.corda.nodeapi.internal.persistence.CordaPersistence.transaction(CordaPersistence.kt:131)
at net.corda.node.internal.AbstractNode.initialiseDatabasePersistence(AbstractNode.kt:699)
at net.corda.node.internal.Node.initialiseDatabasePersistence(Node.kt:347)
at net.corda.node.internal.AbstractNode.start(AbstractNode.kt:207)
at net.corda.node.internal.Node.start(Node.kt:361)
at net.corda.testing.node.internal.DriverDSLImpl$Companion$startInProcessNode$1.invoke(DriverDSLImpl.kt:805)
at net.corda.testing.node.internal.DriverDSLImpl$Companion$startInProcessNode$1.invoke(DriverDSLImpl.kt:767)
at net.corda.core.internal.concurrent.ValueOrException$DefaultImpls.capture(CordaFutureImpl.kt:107)
at net.corda.core.internal.concurrent.OpenFuture$DefaultImpls.capture(CordaFutureImpl.kt)
at net.corda.core.internal.concurrent.CordaFutureImpl.capture(CordaFutureImpl.kt:119)
at net.corda.core.internal.concurrent.CordaFutureImplKt$fork$$inlined$also$lambda$1.run(CordaFutureImpl.kt:22)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$Sche..(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
У меня запущена только одна нода и, казалось бы, никакие процессы не могут помешать выполнению программы (опять же, она отлично работает при запуске из 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
Вы поняли, что могу редактируете вопрос? Форматы кода намного лучше в вопросах (и ответах), чем в комментариях. И: Если это часть вопроса, добавьте его к вопросу!




Address already in use вероятно означает, что этот порт использует другая программа. Убедитесь, что одновременно работает только 1 экземпляр вашего кода. Кроме того, попробуйте изменить порт, который он использует, или найдите программу, использующую этот порт.
Сложность заключается в том, что я не могу проверить, какой порт пытается использовать программа, потому что она не работает внутри функции библиотеки Corda. И порты, которые мы настраиваем вручную, можно использовать, потому что они работают, когда мы запускаем их из IDE.
Тогда это означает, что вам нужно найти порт, который использует Корда, боюсь, здесь вы мало что сможете сделать.
Было бы полезно, если бы вы предоставили код, вызывающий ошибку, вместо трассировки исключения. Также может быть важна операционная система, которую вы используете.