Corda节点启动时出现空指针异常

时间:2018-08-29 09:37:25

标签: corda

我是Corda的新手,在成功构建后使用call命令启动节点时,corda的其中一个节点抛出了如下所示的空指针异常

  

java.lang.NullPointerException           在co.paralleluniverse.fibers.instrument.MethodDatabase $ ClassEntry.equals(MethodDatabase.java:557)           在co.paralleluniverse.fibers.instrument.MethodDatabase.recordSuspendableMethods(MethodDatabase.java:265)           在co.paralleluniverse.fibers.instrument.MethodDatabase.checkClass(MethodDatabase.java:327)           在co.paralleluniverse.fibers.instrument.MethodDatabase.getOrLoadClassEntry(MethodDatabase.java:183)           在co.paralleluniverse.fibers.instrument.SimpleSuspendableClassifier.isSuspendable(SimpleSuspendableClassifier.java:156)           在co.paralleluniverse.fibers.instrument.DefaultSuspendableClassifier.isSuspendable(DefaultSuspendableClassifier.java:47)           在co.paralleluniverse.fibers.instrument.CheckInstrumentationVisitor.visitMethod(CheckInstrumentationVisitor.java:130)           在co.paralleluniverse.asm.ClassReader.b(未知来源)           在co.paralleluniverse.asm.ClassReader.accept(未知来源)           在co.paralleluniverse.asm.ClassReader.accept(未知来源)           在co.paralleluniverse.fibers.instrument.MethodDatabase.checkFileAndClose(MethodDatabase.java:347)           在co.paralleluniverse.fibers.instrument.MethodDatabase.checkClass(MethodDatabase.java:324)           在co.paralleluniverse.fibers.instrument.MethodDatabase.getOrLoadClassEntry(MethodDatabase.java:183)           在co.paralleluniverse.fibers.instrument.MethodDatabase.isMethodSuspendable0(MethodDatabase.java:194)           在co.paralleluniverse.fibers.instrument.MethodDatabase.isMethodSuspendable(MethodDatabase.java:161)           在co.paralleluniverse.fibers.instrument.InstrumentMethod.isSuspendableCall(InstrumentMethod.java:231)           at co.paralleluniverse.fibers.instrument.LabelSuspendableCallSitesClassVisitor $ 1.visitMethodInsn(LabelSuspendableCallSitesClassVisitor.java:64)           在co.paralleluniverse.asm.ClassReader.a(未知来源)           在co.paralleluniverse.asm.ClassReader.b(未知来源)           在co.paralleluniverse.asm.ClassReader.accept(未知来源)           在co.paralleluniverse.asm.ClassReader.accept(未知来源)           在co.paralleluniverse.fibers.instrument.QuasarInstrumentor.instrumentClass(QuasarInstrumentor.java:123)           在co.paralleluniverse.fibers.instrument.QuasarInstrumentor.instrumentClass(QuasarInstrumentor.java:94)           在co.paralleluniverse.fibers.instrument.JavaAgent $ Transformer.transform(JavaAgent.java:209)           在sun.instrument.TransformerManager.transform(未知来源)           在sun.instrument.InstrumentationImpl.transform(未知来源)           在java.lang.ClassLoader.defineClass1(本机方法)           在java.lang.ClassLoader.defineClass(未知来源)           在java.security.SecureClassLoader.defineClass(未知来源)           在java.net.URLClassLoader.defineClass(未知来源)           在java.net.URLClassLoader.access $ 100(未知源)           在java.net.URLClassLoader $ 1.run(未知源)           在java.net.URLClassLoader $ 1.run(未知源)           在java.security.AccessController.doPrivileged(本机方法)           在java.net.URLClassLoader.findClass(未知来源)           在java.lang.ClassLoader.loadClass(未知来源)           在sun.misc.Launcher $ AppClassLoader.loadClass(未知来源)           在java.lang.ClassLoader.loadClass(未知来源)           在sun.instrument.InstrumentationImpl.loadClassAndStartAgent(未知   资源)           在sun.instrument.InstrumentationImpl.loadClassAndCallPremain(未知   源)[quasar]错误:java / lang / Thread   java.lang.NullPointerException           在co.paralleluniverse.fibers.instrument.MethodDatabase $ ClassEntry.equals(MethodDatabase.java:557)           在co.paralleluniverse.fibers.instrument.MethodDatabase.recordSuspendableMethods(MethodDatabase.java:265)           在co.paralleluniverse.fibers.instrument.MethodDatabase.checkClass(MethodDatabase.java:327)           在co.paralleluniverse.fibers.instrument.MethodDatabase.getOrLoadClassEntry(MethodDatabase.java:183)           在co.paralleluniverse.fibers.instrument.SimpleSuspendableClassifier.isSuspendable(SimpleSuspendableClassifier.java:156)           在co.paralleluniverse.fibers.instrument.DefaultSuspendableClassifier.isSuspendable(DefaultSuspendableClassifier.java:47)           在co.paralleluniverse.fibers.instrument.CheckInstrumentationVisitor.visitMethod(CheckInstrumentationVisitor.java:130)           在co.paralleluniverse.asm.ClassReader.b(未知来源)           在co.paralleluniverse.asm.ClassReader.accept(未知来源)           在co.paralleluniverse.asm.ClassReader.accept(未知来源)           在co.paralleluniverse.fibers.instrument.MethodDatabase.checkFileAndClose(MethodDatabase.java:347)           在co.paralleluniverse.fibers.instrument.MethodDatabase.checkClass(MethodDatabase.java:324)           在co.paralleluniverse.fibers.instrument.MethodDatabase.getOrLoadClassEntry(MethodDatabase.java:183)           在co.paralleluniverse.fibers.instrument.MethodDatabase.isMethodSuspendable0(MethodDatabase.java:194)           在co.paralleluniverse.fibers.instrument.MethodDatabase.isMethodSuspendable(MethodDatabase.java:161)           在co.paralleluniverse.fibers.instrument.InstrumentMethod.isSuspendableCall(InstrumentMethod.java:231)           at co.paralleluniverse.fibers.instrument.LabelSuspendableCallSitesClassVisitor $ 1.visitMethodInsn(LabelSuspendableCallSitesClassVisitor.java:64)           在co.paralleluniverse.asm.ClassReader.a(未知来源)           在co.paralleluniverse.asm.ClassReader.b(未知来源)           在co.paralleluniverse.asm.ClassReader.accept(未知来源)           在co.paralleluniverse.asm.ClassReader.accept(未知来源)           在co.paralleluniverse.fibers.instrument.QuasarInstrumentor.instrumentClass(QuasarInstrumentor.java:123)           在co.paralleluniverse.fibers.instrument.QuasarInstrumentor.instrumentClass(QuasarInstrumentor.java:94)           在co.paralleluniverse.fibers.instrument.JavaAgent $ Transformer.transform(JavaAgent.java:209)           在sun.instrument.TransformerManager.transform(未知来源)           在sun.instrument.InstrumentationImpl.transform(未知来源)           在java.lang.ClassLoader.defineClass1(本机方法)           在java.lang.ClassLoader.defineClass(未知来源)           在java.security.SecureClassLoader.defineClass(未知来源)           在java.net.URLClassLoader.defineClass(未知来源)           在java.net.URLClassLoader.access $ 100(未知源)           在java.net.URLClassLoader $ 1.run(未知源)           在java.net.URLClassLoader $ 1.run(未知源)           在java.security.AccessController.doPrivileged(本机方法)           在java.net.URLClassLoader.findClass(未知来源)           在java.lang.ClassLoader.loadClass(未知来源)           在sun.misc.Launcher $ AppClassLoader.loadClass(未知来源)           在java.lang.ClassLoader.loadClass(未知来源)           在sun.instrument.InstrumentationImpl.loadClassAndStartAgent(未知   资源)           在sun.instrument.InstrumentationImpl.loadClassAndCallPremain(未知   来源)

,经过一小段时间后,该节点完成显示其通常的corda徽标,然后是H2控制台url(作为普通节点)。这是正常行为吗?

我使用Kotlin进行编程。

2 个答案:

答案 0 :(得分:3)

可以是

  1. call函数未用@Suspendable注释
  2. 您执行某项send / receive / subFlow的函数(也调用发送/接收)未使用@Suspendable注释。

答案 1 :(得分:2)

您可能错过了@Suspendable注释,或者在需要暂停的函数中包含了lambda。