Uploaded image for project: 'TinkerPop'
  1. TinkerPop
  2. TINKERPOP-2730

Gremlin Console fails to start on ARM Mac with x64 Java

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Invalid
    • 3.5.2
    • None
    • console
    • 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).

      Attachments

        Activity

          People

            Unassigned Unassigned
            jrrrr John Ruble
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: