我是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进行编程。
答案 0 :(得分:3)
可以是
call
函数未用@Suspendable
注释send
/ receive
/ subFlow
的函数(也调用发送/接收)未使用@Suspendable
注释。答案 1 :(得分:2)
您可能错过了@Suspendable
注释,或者在需要暂停的函数中包含了lambda。