kotlin - 启动corda jar时出现问题:newAtomicIntegerFieldUpdater
问题描述
我尝试启动(就像在这个问题中一样)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(未知来源)
解决方案
使用最新版本的 Corda (4.0+),您不再需要将驱动程序作为 args。您可以简单地通过以下方式启动节点:
java -jar corda.jar
您甚至可以在 build.gradle 文件中为整个 JVM 分配更多 RAM,这样您的节点启动可能会更快:
extraConfig = ['jvmArgs' : [ "-Xmx2048m", "-Xms512m", "-XX:+UseG1GC" ] ]
推荐阅读
- python - 网络爬虫 SQLite3 SELECT 用于下一个要爬取的链接非常慢
- javascript - 如何使用 expressjs 和 nodejs 返回 JSON 的多个更新
- python - 没有名为torch的模型
- javascript - javascript代码在等待后没有继续
- python - 如何解决“TypeError:new_reply() 缺少 1 个必需的位置参数:'post_id'”
- angular - *ngFor 不能绑定到“ngForOf”,因为它不是“div”的已知属性。
- angular - 来自另一个组件的 MatTableDataSource
- javascript - VS Code:检查文件资源管理器是否显示?
- javascript - 在我的功能组件中导致“太多重新渲染”的鼠标事件
- html - 如何用不同的颜色为css中的每个li着色