【问题标题】:Problem launching corda jar: newAtomicIntegerFieldUpdater启动corda jar时出现问题:newAtomicIntegerFieldUpdater
【发布时间】:2019-03-11 12:48:15
【问题描述】:

我尝试启动(如在this question 中)corda 独立 jar 并遇到问题:

internal.DriverDSLImpl.genericDriver - 驱动程序因异常而关闭 java.lang.NoSuchMethodError: io.netty.util.internal.PlatformDependent.newAtomicIntegerFieldUpdater(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater; 在 io.netty.buffer.AbstractReferenceCountedByteBuf.(AbstractReferenceCountedByteBuf.java:32) ~[corda/:?] 在 io.netty.buffer.Unpooled.wrappedBuffer(Unpooled.java:199) ~[corda/:?] 在 org.apache.activemq.artemis.core.io.buffer.TimedBuffer.(TimedBuffer.java:111) ~[corda/:?] 在 org.apache.activemq.artemis.core.io.AbstractSequentialFileFactory.(AbstractSequentialFileFactory.java:78) ~[corda/:?] 在 org.apache.activemq.artemis.core.io.nio.NIOSequentialFileFactory.(NIOSequentialFileFactory.java:75) ~[corda/:?] 在 org.apache.activemq.artemis.core.persistence.impl.journal.JournalStorageManager.init(JournalStorageManager.java:132) ~[corda/:?] 在 org.apache.activemq.artemis.core.persistence.impl.journal.AbstractJournalStorageManager.(AbstractJournalStorageManager.java:217) ~[corda/:?] 在 org.apache.activemq.artemis.core.persistence.impl.journal.JournalStorageManager.(JournalStorageManager.java:103) ~[corda/:?] 在 org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.createStorageManager(ActiveMQServerImpl.java:2008) ~[corda/:?] 在 org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.initialisePart1(ActiveMQServerImpl.java:2145) ~[corda/:?] 在 org.apache.activemq.artemis.core.server.impl.LiveOnlyActivation.run(LiveOnlyActivation.java:63) ~[corda/:?] 在 org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.internalStart(ActiveMQServerImpl.java:516) ~[corda/:?] 在 org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.start(ActiveMQServerImpl.java:464) ~[corda/:?] 在 net.corda.node.services.messaging.ArtemisMessagingServer.configureAndStartServer(ArtemisMessagingServer.kt:122) ~[corda/:?] 在 net.corda.node.services.messaging.ArtemisMessagingServer.start(ArtemisMessagingServer.kt:92) ~[corda/:?] 在 net.corda.node.internal.Node.startMessagingService(Node.kt:294) ~[corda/:?] 在 net.corda.node.internal.AbstractNode$start$4.invoke(AbstractNode.kt:256) ~[corda/:?] 在 net.corda.node.internal.AbstractNode$start$4.invoke(AbstractNode.kt:105) ~[corda/:?] 在 net.corda.node.internal.AbstractNode$initialiseDatabasePersistence$2.invoke(AbstractNode.kt:700) ~[corda/:?] 在 net.corda.node.internal.AbstractNode$initialiseDatabasePersistence$2.invoke(AbstractNode.kt:105) ~[corda/:?] 在 net.corda.nodeapi.internal.persistence.CordaPersistence.inTopLevelTransaction(CordaPersistence.kt:152) ~[corda/:?] 在 net.corda.nodeapi.internal.persistence.CordaPersistence.transaction(CordaPersistence.kt:138) ~[corda/:?] 在 net.corda.nodeapi.internal.persistence.CordaPersistence.transaction(CordaPersistence.kt:124) ~[corda/:?] 在 net.corda.nodeapi.internal.persistence.CordaPersistence.transaction(CordaPersistence.kt:131) ~[corda/:?] 在 net.corda.node.internal.AbstractNode.initialiseDatabasePersistence(AbstractNode.kt:699) ~[corda/:?] 在 net.corda.node.internal.Node.initialiseDatabasePersistence(Node.kt:347) ~[corda/:?] 在 net.corda.node.internal.AbstractNode.start(AbstractNode.kt:207) ~[corda/:?] 在 net.corda.node.internal.Node.start(Node.kt:361) ~[corda/:?] 在 net.corda.testing.node.internal.DriverDSLImpl$Companion$startInProcessNode$1.invoke(DriverDSLImpl.kt:805) ~[corda/:?] 在 net.corda.testing.node.internal.DriverDSLImpl$Companion$startInProcessNode$1.invoke(DriverDSLImpl.kt:767) ~[corda/:?] 在 net.corda.core.internal.concurrent.ValueOrException$DefaultImpls.capture(CordaFutureImpl.kt:107) ~[corda/:?] 在 net.corda.core.internal.concurrent.OpenFuture$DefaultImpls.capture(CordaFutureImpl.kt) ~[corda/:?] 在 net.corda.core.internal.concurrent.CordaFutureImpl.capture(CordaFutureImpl.kt:119) ~[corda/:?] 在 net.corda.core.internal.concurrent.CordaFutureImplKt$fork$$inlined$also$lambda$1.run(CordaFutureImpl.kt:22) ~[corda/:?] 在 java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_202] 在 java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_202] 在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source) ~[?:1.8.0_202] 在 java.util.concurrent.ScheduledThreadPoolExecutor$Sche..(Unknown Source) ~[?:1.8.0_202] 在 java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:1.8.0_202] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:1.8.0_202] 在 java.lang.Thread.run(Unknown Source) ~[?:1.8.0_202] 线程“主”java.lang.NoClassDefFoundError 中的异常:无法初始化类 io.netty.buffer.UnpooledUnsafeDirectByteBuf 在 io.netty.buffer.Unpooled.wrappedBuffer(Unpooled.java:199) 在 org.apache.activemq.artemis.core.io.buffer.TimedBuffer.(TimedBuffer.java:111) 在 org.apache.activemq.artemis.core.io.AbstractSequentialFileFactory.(AbstractSequentialFileFactory.java:78) 在 org.apache.activemq.artemis.core.io.nio.NIOSequentialFileFactory.(NIOSequentialFileFactory.java:75) 在 org.apache.activemq.artemis.core.persistence.impl.journal.JournalStorageManager.init(JournalStorageManager.java:132) 在 org.apache.activemq.artemis.core.persistence.impl.journal.AbstractJournalStorageManager.(AbstractJournalStorageManager.java:217) 在 org.apache.activemq.artemis.core.persistence.impl.journal.JournalStorageManager.(JournalStorageManager.java:103) 在 org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.createStorageManager(ActiveMQServerImpl.java:2008) 在 org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.initialisePart1(ActiveMQServerImpl.java:2145) 在 org.apache.activemq.artemis.core.server.impl.LiveOnlyActivation.run(LiveOnlyActivation.java:63) 在 org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.internalStart(ActiveMQServerImpl.java:516) 在 org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl.start(ActiveMQServerImpl.java:464) 在 net.corda.node.services.messaging.ArtemisMessagingServer.configureAndStartServer(ArtemisMessagingServer.kt:122) 在 net.corda.node.services.messaging.ArtemisMessagingServer.start(ArtemisMessagingServer.kt:92) 在 net.corda.node.internal.Node.startMessagingService(Node.kt:294) 在 net.corda.node.internal.AbstractNode$start$4.invoke(AbstractNode.kt:256) 在 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(未知来源)

【问题讨论】:

    标签: kotlin jar corda


    【解决方案1】:

    使用最新版本的 Corda (4.0+),您不再需要将驱动程序作为 args。您可以简单地通过以下方式启动节点:

    java -jar corda.jar
    

    您甚至可以在 build.gradle 文件中为整个 JVM 分配更多 RAM,这样您的节点启动可能会更快:

    extraConfig = ['jvmArgs' : [ "-Xmx2048m", "-Xms512m", "-XX:+UseG1GC" ] ]
    

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 2016-11-20
      • 2018-07-31
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多