Mac运行Gremlin Server失败:gremlin.sh报不支持类文件版本62错误
Gremlin Console启动报错:Unsupported class file major version 62 解决思路
问题背景
系统:MacOS Monterey 12.3.1
Gremlin Server版本:3.6.0
Java版本:
$ java --version Picked up JAVA_TOOL_OPTIONS: -Dlog4j2.formatMsgNoLookups=true java 18.0.1.1 2022-04-22 Java(TM) SE Runtime Environment (build 18.0.1.1+2-6) Java HotSpot(TM) 64-Bit Server VM (build 18.0.1.1+2-6, mixed mode, sharing)
运行./bin/gremlin.sh时触发如下错误:
Picked up JAVA_TOOL_OPTIONS: -Dlog4j2.formatMsgNoLookups=true \,,,/ (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) ...(省略后续堆栈信息) Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 62 at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:196) ...(省略后续堆栈信息)
错误原因
Class文件主版本号62对应Java 18,而Gremlin 3.6.0内置的Groovy版本(及其依赖的ASM库)不支持解析Java18编译的类文件,导致语义分析阶段失败。
解决办法
1. 降级Java版本(推荐)
Gremlin 3.6.x官方支持的Java版本为8、11、17,切换到这些版本之一即可解决问题:
- 使用
jenv或brew等工具管理Java版本,快速切换到Java11/17 - 切换后重新运行
./bin/gremlin.sh
2. 升级Gremlin版本
升级到Gremlin 3.7.x及以上版本,这些版本内置的Groovy已支持Java18,直接兼容当前Java环境。
3. 手动替换依赖(不推荐)
如果必须保留Java18,可以尝试替换Gremlin安装目录下的Groovy和ASM依赖包为支持Java18的版本:
- 下载Groovy 3.0.9+版本的核心jar包,替换
lib目录下旧的Groovy相关文件 - 下载兼容Java18的ASM库,替换对应的
groovyjarjarasm相关jar包 - 注意:此方法可能引发兼容性问题,需自行验证稳定性
内容的提问来源于stack exchange,提问作者Anil_M
相关产品推荐
相关产品推荐

