I've read a similar issue but my environment is different.
I've cloned the Corda samples and ensured that I have Java 8 (update 301) and Gradle 5.6.4:
cordapp-example % java -version
java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)
cordapp-example % gradle -version
------------------------------------------------------------
Gradle 5.6.4
------------------------------------------------------------
Build time: 2019-11-01 20:42:00 UTC
Revision: dd870424f9bd8e195d614dc14bb140f43c22da98
Kotlin: 1.3.41
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.14 compiled on March 12 2019
JVM: 1.8.0_301 (Oracle Corporation 25.301-b09)
OS: Mac OS X 10.16 x86_64
Yet when I follow the "Run a sample Cordapp" tutorial I fail at the runnodes
step:
cordapp-example % bash -c 'cd "/Users/arinea/Munca/Corda/samples-java/Basic/cordapp-example/build/nodes/PartyB" ; "/Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home/bin/java" "-Dcapsule.jvm.args=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5007 -javaagent:drivers/jolokia-jvm-1.6.0-agent.jar=port=7007,logHandlerClass=net.corda.node.JolokiaSlf4jAdapter" "-Dname=PartyB" "-jar" "/Users/arinea/Munca/Corda/samples-java/Basic/cordapp-example/build/nodes/PartyB/corda.jar" && exit'
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by Capsule (file:/Users/arinea/Munca/Corda/samples-java/Basic/cordapp-example/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: 5007
[quasar] ERROR: java/lang/Object
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:345)
at co.paralleluniverse.fibers.instrument.MethodDatabase.checkClass(MethodDatabase.java:325)
at co.paralleluniverse.fibers.instrument.MethodDatabase.getOrLoadClassEntry(MethodDatabase.java:184)
at co.paralleluniverse.fibers.instrument.SimpleSuspendableClassifier.isSuspendable(SimpleSuspendableClassifier.java:156)
at co.paralleluniverse.fibers.instrument.DefaultSuspendableClassifier.isSuspendable(DefaultSuspendableClassifier.java:47)
at co.paralleluniverse.fibers.instrument.CheckInstrumentationVisitor.visitMethod(CheckInstrumentationVisitor.java:130)
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.MethodDatabase.checkFileAndClose(MethodDatabase.java:348)
at co.paralleluniverse.fibers.instrument.MethodDatabase.checkClass(MethodDatabase.java:325)
at co.paralleluniverse.fibers.instrument.MethodDatabase.getOrLoadClassEntry(MethodDatabase.java:184)
at co.paralleluniverse.fibers.instrument.MethodDatabase.isMethodSuspendable0(MethodDatabase.java:195)
at co.paralleluniverse.fibers.instrument.MethodDatabase.isMethodSuspendable(MethodDatabase.java:162)
at co.paralleluniverse.fibers.instrument.InstrumentMethod.isSuspendableCall(InstrumentMethod.java:231)
at co.paralleluniverse.fibers.instrument.LabelSuspendableCallSitesClassVisitor$1.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:129)
at co.paralleluniverse.fibers.instrument.QuasarInstrumentor.instrumentClass(QuasarInstrumentor.java:100)
at co.paralleluniverse.fibers.instrument.JavaAgent$Transformer.transform(JavaAgent.java:241)
at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:246)
at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:563)
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at java.base/sun.launcher.LauncherHelper.loadMainClass(LauncherHelper.java:760)
at java.base/sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:655)
Upon careful inspection of the first lines in the three tabs that fail we see:
... "/Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home/bin/java" ...
I do also have this Java 11 installed on my OS X but why is it being picked up!?
java -version
, as seen above, points to 1.8 u301,
cordapp-example % echo $JAVA_HOME
/Users/arinea/.jenv/versions/1.8.0.301
cordapp-example % ll /Users/arinea/.jenv/versions
total 0
lrwxr-xr-x 1 arinea staff 64B 24 Iul 22:37 1.8 -> /Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home
lrwxr-xr-x 1 arinea staff 64B 24 Iul 22:37 1.8.0.241 -> /Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home
lrwxr-xr-x 1 arinea staff 64B 13 Aug 16:00 1.8.0.301 -> /Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home
lrwxr-xr-x 1 arinea staff 63B 24 Iul 22:37 11 -> /Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home
lrwxr-xr-x 1 arinea staff 63B 24 Iul 22:37 11.0 -> /Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home
lrwxr-xr-x 1 arinea staff 63B 24 Iul 22:37 11.0.10 -> /Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home
lrwxr-xr-x 1 arinea staff 64B 24 Iul 22:37 oracle64-1.8.0.241 -> /Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home
lrwxr-xr-x 1 arinea staff 64B 13 Aug 16:00 oracle64-1.8.0.301 -> /Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home
lrwxr-xr-x 1 arinea staff 63B 24 Iul 22:37 oracle64-11.0.10 -> /Library/Java/JavaVirtualMachines/jdk-11.0.10.jdk/Contents/Home
For the life of me I can't tell why is JDK11 picked up.. Do I need to remove it from my system?
Later edit:
This problem happens when I run ./build/nodes/runnodes
from the cordapp-example directory. If I go to build/nodes and run there java -jar runnodes.jar
everything works well, as expected...
The answer is right in the runnodes
script file:
1 #!/usr/bin/env bash
2
3 set -eo pipefail
4
5 # Allow the script to be run from outside the nodes directory.
6 basedir=$( dirname "$0" )
7 cd "$basedir"
8
9 if [ -z "$JAVA_HOME" ] && which osascript >/dev/null; then
10 # use default version of java installed on mac
11 /usr/libexec/java_home --exec java -jar runnodes.jar "$@"
12 else
13 "${JAVA_HOME:+$JAVA_HOME/bin/}java" -jar runnodes.jar "$@"
14 fi
Line 11 gets executed (as opposed to line 13) which uses /usr/libexec/java_home
which in my case (and many other people's, judging from what I could find on the net..) will point to the latest JDK installed. That is JDK 11 and Corda is not compatible with it.
Just make sure you don't use that one and use a JDK 8 above update 131.