Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Invalid
-
3.5.2
-
None
-
None
Description
Trying to use Gremlin Console with x64 Java 18 on an M1 Mac throws an Unsupported class file major version 62 exception. This happens with both Oracle and OpenJDK.
Here's a sample project to repro this on an M1 Mac:
https://github.com/jrr/gremlin-console-jvms
jrr@jrrmbp ~/r/gremlin-console-jvms (main) [2]> make test_openjdk_18_x64 (...) file `which java` /Users/jrr/repos/gremlin-console-jvms/.jdks/openjdk_18_x64/jdk-18.jdk/Contents/Home/bin/java: Mach-O 64-bit executable x86_64 java -version openjdk version "18" 2022-03-22 OpenJDK Runtime Environment (build 18+36-2087) OpenJDK 64-Bit Server VM (build 18+36-2087, mixed mode, sharing) make gremlin-console .gremlin-console/apache-tinkerpop-gremlin-console/bin/gremlin.sh \,,,/ (o o) -----oOOo-(3)-oOOo----- Exception in thread "main" BUG! exception in phase 'semantic analysis' in source unit 'Script1.groovy' Unsupported class file major version 62 at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:969) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:642) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:591) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:401) at groovy.lang.GroovyClassLoader.access$300(GroovyClassLoader.java:89) at groovy.lang.GroovyClassLoader$5.provide(GroovyClassLoader.java:341) at groovy.lang.GroovyClassLoader$5.provide(GroovyClassLoader.java:338) at org.codehaus.groovy.runtime.memoize.ConcurrentCommonCache.getAndPut(ConcurrentCommonCache.java:147) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:336) at groovy.lang.GroovyShell.parseClass(GroovyShell.java:546) at groovy.lang.GroovyShell.parse(GroovyShell.java:558) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:442) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:481) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:452) at org.codehaus.groovy.tools.shell.util.PackageHelperImpl.getPackagesAndClassesFromJigsaw(PackageHelperImpl.groovy:151) at org.codehaus.groovy.tools.shell.util.PackageHelperImpl.getPackages(PackageHelperImpl.groovy:125) at org.codehaus.groovy.tools.shell.util.PackageHelperImpl.initializePackages(PackageHelperImpl.groovy:62) at org.codehaus.groovy.tools.shell.util.PackageHelperImpl.<init>(PackageHelperImpl.groovy:51) at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483) at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:80) at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:237) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:249) at org.codehaus.groovy.tools.shell.Groovysh.<init>(Groovysh.groovy:112) at org.codehaus.groovy.tools.shell.Groovysh.<init>(Groovysh.groovy:101) at org.codehaus.groovy.tools.shell.Groovysh.<init>(Groovysh.groovy:140) at org.apache.tinkerpop.gremlin.console.GremlinGroovysh.<init>(GremlinGroovysh.groovy:45) at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483) at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:80) at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:237) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:257) at org.apache.tinkerpop.gremlin.console.Console.<init>(Console.groovy:100) at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483) at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:80) at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:237) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:265) at org.apache.tinkerpop.gremlin.console.Console.main(Console.groovy:524) Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 62 at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:196) at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:177) at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:163) at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:284) at org.codehaus.groovy.ast.decompiled.AsmDecompiler.parseClass(AsmDecompiler.java:81) at org.codehaus.groovy.control.ClassNodeResolver.findDecompiled(ClassNodeResolver.java:251) at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:189) at org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:169) at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:125) at org.codehaus.groovy.control.ResolveVisitor.resolveToOuter(ResolveVisitor.java:853) at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:467) at org.codehaus.groovy.control.ResolveVisitor.resolveFromDefaultImports(ResolveVisitor.java:629) at org.codehaus.groovy.control.ResolveVisitor.resolveFromDefaultImports(ResolveVisitor.java:612) at org.codehaus.groovy.control.ResolveVisitor.resolveFromDefaultImports(ResolveVisitor.java:586) at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:465) at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:428) at org.codehaus.groovy.control.ResolveVisitor.transformVariableExpression(ResolveVisitor.java:1120) at org.codehaus.groovy.control.ResolveVisitor.transform(ResolveVisitor.java:871) at org.codehaus.groovy.control.ResolveVisitor.transformMethodCallExpression(ResolveVisitor.java:1266) at org.codehaus.groovy.control.ResolveVisitor.transform(ResolveVisitor.java:879) at org.codehaus.groovy.ast.expr.Expression.transformExpressions(Expression.java:49) at org.codehaus.groovy.ast.expr.ArgumentListExpression.transformExpression(ArgumentListExpression.java:67) at org.codehaus.groovy.control.ResolveVisitor.transform(ResolveVisitor.java:888) at org.codehaus.groovy.control.ResolveVisitor.transformMethodCallExpression(ResolveVisitor.java:1264) at org.codehaus.groovy.control.ResolveVisitor.transform(ResolveVisitor.java:879) at org.codehaus.groovy.control.ResolveVisitor.transformDeclarationExpression(ResolveVisitor.java:1291) at org.codehaus.groovy.control.ResolveVisitor.transform(ResolveVisitor.java:875) at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitExpressionStatement(ClassCodeExpressionTransformer.java:142) at org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:40) at org.codehaus.groovy.ast.CodeVisitorSupport.visitBlockStatement(CodeVisitorSupport.java:86) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitBlockStatement(ClassCodeVisitorSupport.java:106) at org.codehaus.groovy.control.ResolveVisitor.visitBlockStatement(ResolveVisitor.java:1553) at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:110) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:121) at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitConstructorOrMethod(ClassCodeExpressionTransformer.java:53) at org.codehaus.groovy.control.ResolveVisitor.visitConstructorOrMethod(ResolveVisitor.java:257) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:132) at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1103) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:54) at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1465) at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:230) at org.codehaus.groovy.control.CompilationUnit$13.call(CompilationUnit.java:700) at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:965) ... 47 more make[1]: *** [gremlin-console] Error 1 make: *** [test_openjdk_18_x64] Error 2
An additional bit of information that may help bisect this: Gremlin Console does work on an M1 Mac with Java 8 update 321 (for more detail see the sample project).