runnodes 时发生了非法的反射访问操作
An illegal reflective access operation has occurred when runnodes
我正在尝试 运行 我的 corda 节点,但我遇到了一个奇怪的问题,节点正在正确启动,正如您在日志中看到的那样
C:\Repositorio\cordapp-template-kotlin\build\nodes>runnodes --log-to-console --logging-level=DEBUG
Starting nodes in C:\Repositorio\cordapp-template-kotlin\build\nodes
Starting corda.jar in C:\Repositorio\cordapp-template-kotlin\build\nodes\Notary on debug port 5005
Starting corda.jar in C:\Repositorio\cordapp-template-kotlin\build\nodes\PartyA on debug port 5006
Starting corda-webserver.jar in C:\Repositorio\cordapp-template-kotlin\build\nodes\PartyA on debug port 5007
Starting corda.jar in C:\Repositorio\cordapp-template-kotlin\build\nodes\PartyB on debug port 5008
Starting corda-webserver.jar in C:\Repositorio\cordapp-template-kotlin\build\nodes\PartyB on debug port 5009
Started 5 processes
Finished starting nodes
然而,当它打开 5 个控制台以实际 运行 Web 服务和节点时,它就发生了。
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by Capsule (file:/C:/Repositorio/cordapp-template-kotlin/build/nodes/PartyB/corda.jar) to field com.sun.jmx.mbeanserver.JmxMBeanServer.mbsInterceptor
WARNING: Please consider reporting this to the maintainers of Capsule
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Listening for transport dt_socket at address: 5008
[quasar] ERROR: java/lang/Thread
java.lang.IllegalArgumentException
at co.paralleluniverse.asm.ClassReader.<init>(Unknown Source)
at co.paralleluniverse.asm.ClassReader.<init>(Unknown Source)
at co.paralleluniverse.asm.ClassReader.<init>(Unknown Source)
at co.paralleluniverse.fibers.instrument.MethodDatabase.checkFileAndClose(MethodDatabase.java:344)
at co.paralleluniverse.fibers.instrument.MethodDatabase.checkClass(MethodDatabase.java:324)
at co.paralleluniverse.fibers.instrument.MethodDatabase.getOrLoadClassEntry(MethodDatabase.java:183)
at co.paralleluniverse.fibers.instrument.MethodDatabase.isMethodSuspendable0(MethodDatabase.java:194)
at co.paralleluniverse.fibers.instrument.MethodDatabase.isMethodSuspendable(MethodDatabase.java:161)
at co.paralleluniverse.fibers.instrument.InstrumentMethod.isSuspendableCall(InstrumentMethod.java:231)
at co.paralleluniverse.fibers.instrument.LabelSuspendableCallSitesClassVisitor.visitMethodInsn(LabelSuspendableCallSitesClassVisitor.java:64)
at co.paralleluniverse.asm.ClassReader.a(Unknown Source)
at co.paralleluniverse.asm.ClassReader.b(Unknown Source)
at co.paralleluniverse.asm.ClassReader.accept(Unknown Source)
at co.paralleluniverse.asm.ClassReader.accept(Unknown Source)
at co.paralleluniverse.fibers.instrument.QuasarInstrumentor.instrumentClass(QuasarInstrumentor.java:123)
at co.paralleluniverse.fibers.instrument.QuasarInstrumentor.instrumentClass(QuasarInstrumentor.java:94)
at co.paralleluniverse.fibers.instrument.JavaAgent$Transformer.transform(JavaAgent.java:209)
at java.instrument/java.lang.instrument.ClassFileTransformer.transform(Unknown Source)
at java.instrument/sun.instrument.TransformerManager.transform(Unknown Source)
at java.instrument/sun.instrument.InstrumentationImpl.transform(Unknown Source)
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
at java.base/java.security.SecureClassLoader.defineClass(Unknown Source)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(Unknown Source)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Unknown Source)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Unknown Source)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(Unknown Source)
at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(Unknown Source)
[quasar] ERROR: java/lang/Thread
java.lang.IllegalArgumentException
at co.paralleluniverse.asm.ClassReader.<init>(Unknown Source)
at co.paralleluniverse.asm.ClassReader.<init>(Unknown Source)
at co.paralleluniverse.asm.ClassReader.<init>(Unknown Source)
at co.paralleluniverse.fibers.instrument.MethodDatabase.checkFileAndClose(MethodDatabase.java:344)
at co.paralleluniverse.fibers.instrument.MethodDatabase.checkClass(MethodDatabase.java:324)
控制台打印屏幕:
有没有人遇到过同样的问题?我不知道如何调试它。
你是 运行 Java 10. Corda 仅在 Oracle JDK 8 JVM 的 8u131+ 版本上受支持。
您可以在此处查看所需的 Java 版本:https://docs.corda.net/getting-set-up.html。
在File > Project Structure... to 1.8.0_242
下更改Project SDK后,您可能还需要unlink和link Gradle 再次通过:
- 右键单击 Gradle window 上的 Gradle 项目,然后单击
Unlink Gradle Project
- 转到
File > Close Project
- 再次打开您当前的项目,您将看到一条消息
IntelliJ IDEA found a Gradle build script
- 点击下方的
Import Gradle Project
等待完成。
我写这篇文章是因为我不小心在 Java 11 环境中导入了 Gradle。但是,在更改项目 SDK 后,由于 java.lang.IllegalArgumentException
错误,我仍然无法 运行 单元测试。
我正在尝试 运行 我的 corda 节点,但我遇到了一个奇怪的问题,节点正在正确启动,正如您在日志中看到的那样
C:\Repositorio\cordapp-template-kotlin\build\nodes>runnodes --log-to-console --logging-level=DEBUG
Starting nodes in C:\Repositorio\cordapp-template-kotlin\build\nodes
Starting corda.jar in C:\Repositorio\cordapp-template-kotlin\build\nodes\Notary on debug port 5005
Starting corda.jar in C:\Repositorio\cordapp-template-kotlin\build\nodes\PartyA on debug port 5006
Starting corda-webserver.jar in C:\Repositorio\cordapp-template-kotlin\build\nodes\PartyA on debug port 5007
Starting corda.jar in C:\Repositorio\cordapp-template-kotlin\build\nodes\PartyB on debug port 5008
Starting corda-webserver.jar in C:\Repositorio\cordapp-template-kotlin\build\nodes\PartyB on debug port 5009
Started 5 processes
Finished starting nodes
然而,当它打开 5 个控制台以实际 运行 Web 服务和节点时,它就发生了。
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by Capsule (file:/C:/Repositorio/cordapp-template-kotlin/build/nodes/PartyB/corda.jar) to field com.sun.jmx.mbeanserver.JmxMBeanServer.mbsInterceptor
WARNING: Please consider reporting this to the maintainers of Capsule
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Listening for transport dt_socket at address: 5008
[quasar] ERROR: java/lang/Thread
java.lang.IllegalArgumentException
at co.paralleluniverse.asm.ClassReader.<init>(Unknown Source)
at co.paralleluniverse.asm.ClassReader.<init>(Unknown Source)
at co.paralleluniverse.asm.ClassReader.<init>(Unknown Source)
at co.paralleluniverse.fibers.instrument.MethodDatabase.checkFileAndClose(MethodDatabase.java:344)
at co.paralleluniverse.fibers.instrument.MethodDatabase.checkClass(MethodDatabase.java:324)
at co.paralleluniverse.fibers.instrument.MethodDatabase.getOrLoadClassEntry(MethodDatabase.java:183)
at co.paralleluniverse.fibers.instrument.MethodDatabase.isMethodSuspendable0(MethodDatabase.java:194)
at co.paralleluniverse.fibers.instrument.MethodDatabase.isMethodSuspendable(MethodDatabase.java:161)
at co.paralleluniverse.fibers.instrument.InstrumentMethod.isSuspendableCall(InstrumentMethod.java:231)
at co.paralleluniverse.fibers.instrument.LabelSuspendableCallSitesClassVisitor.visitMethodInsn(LabelSuspendableCallSitesClassVisitor.java:64)
at co.paralleluniverse.asm.ClassReader.a(Unknown Source)
at co.paralleluniverse.asm.ClassReader.b(Unknown Source)
at co.paralleluniverse.asm.ClassReader.accept(Unknown Source)
at co.paralleluniverse.asm.ClassReader.accept(Unknown Source)
at co.paralleluniverse.fibers.instrument.QuasarInstrumentor.instrumentClass(QuasarInstrumentor.java:123)
at co.paralleluniverse.fibers.instrument.QuasarInstrumentor.instrumentClass(QuasarInstrumentor.java:94)
at co.paralleluniverse.fibers.instrument.JavaAgent$Transformer.transform(JavaAgent.java:209)
at java.instrument/java.lang.instrument.ClassFileTransformer.transform(Unknown Source)
at java.instrument/sun.instrument.TransformerManager.transform(Unknown Source)
at java.instrument/sun.instrument.InstrumentationImpl.transform(Unknown Source)
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
at java.base/java.security.SecureClassLoader.defineClass(Unknown Source)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(Unknown Source)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Unknown Source)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Unknown Source)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(Unknown Source)
at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(Unknown Source)
[quasar] ERROR: java/lang/Thread
java.lang.IllegalArgumentException
at co.paralleluniverse.asm.ClassReader.<init>(Unknown Source)
at co.paralleluniverse.asm.ClassReader.<init>(Unknown Source)
at co.paralleluniverse.asm.ClassReader.<init>(Unknown Source)
at co.paralleluniverse.fibers.instrument.MethodDatabase.checkFileAndClose(MethodDatabase.java:344)
at co.paralleluniverse.fibers.instrument.MethodDatabase.checkClass(MethodDatabase.java:324)
控制台打印屏幕:
有没有人遇到过同样的问题?我不知道如何调试它。
你是 运行 Java 10. Corda 仅在 Oracle JDK 8 JVM 的 8u131+ 版本上受支持。
您可以在此处查看所需的 Java 版本:https://docs.corda.net/getting-set-up.html。
在File > Project Structure... to 1.8.0_242
下更改Project SDK后,您可能还需要unlink和link Gradle 再次通过:
- 右键单击 Gradle window 上的 Gradle 项目,然后单击
Unlink Gradle Project
- 转到
File > Close Project
- 再次打开您当前的项目,您将看到一条消息
IntelliJ IDEA found a Gradle build script
- 点击下方的
Import Gradle Project
等待完成。
我写这篇文章是因为我不小心在 Java 11 环境中导入了 Gradle。但是,在更改项目 SDK 后,由于 java.lang.IllegalArgumentException
错误,我仍然无法 运行 单元测试。