You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac M1运行groovysh遇"no jansi in java.library.path"问题求助

Mac M1 上 Groovy 4.0.8 groovysh 的 Jansi 架构兼容问题分析

问题本质

你遇到的核心问题是 Mac M1 的 arm64 架构与 Groovy 自带的 Jansi 原生库不兼容:

  • Groovy 4.0.8 依赖的 Jansi 原生临时库(libjansi-64-xxxx.jnilib)仅包含x86_64,i386架构,缺少 M1 所需的arm64,导致加载失败,触发"ANSI 将被禁用"的警告。
  • 手动指定jansi-2.4.0.jar到类路径能正常运行,因为该版本的 Jansi jar 本身内置了 arm64 架构支持,但 groovysh 的启动脚本在 Mac M1 环境下没有自动将 lib 目录下的 jansi jar 纳入默认类路径。

跨平台差异原因(Manjaro vs Mac M1)

  • 在 Manjaro(x86_64 或适配的 arm64 版本)上,groovysh 的启动脚本能正确识别系统架构,自动将 lib 目录下的所有依赖(包括 jansi)加入类路径,同时 Jansi 的原生库匹配系统架构,因此无需额外配置。
  • 而 Mac M1 的 arm64 环境下,Groovy 4.0.8 的启动脚本存在兼容性缺陷,没有正确处理类路径的自动导入,导致 JVM 无法找到兼容的 Jansi 实现,转而尝试加载预编译的 x86_64 原生库,最终失败。

临时解决方案

  1. 单次启动指定类路径:
    你已验证的方法,直接在启动时指定 jansi jar:
    groovysh -cp /Users/xxx/.sdkman/candidates/groovy/4.0.8/lib/jansi-2.4.0.jar
    
  2. 修改启动脚本永久修复:
    找到 SDKMAN 中 Groovy 的 bin 目录(通常为~/.sdkman/candidates/groovy/4.0.8/bin),编辑groovysh脚本,在 CLASSPATH 配置段添加 jansi jar 的路径:
    CLASSPATH="$CLASSPATH:$GROOVY_HOME/lib/jansi-2.4.0.jar"
    
    保存后直接运行groovysh即可正常使用。

是否属于 Bug?

这大概率是 Groovy 启动脚本在 Mac arm64 环境下的兼容性 Bug,或是 SDKMAN 打包 Groovy 时的适配遗漏。同版本 Groovy 在 Linux 环境下能正常工作,说明启动逻辑在非 Mac arm64 环境下是正常的,针对 M1 的架构适配存在缺失。

你可以前往 Groovy 官方代码仓库提交 Issue,说明以下信息:

  • 环境:Mac M1(arm64)、Groovy 4.0.8、SDKMAN 安装方式
  • 问题现象:启动 groovysh 时的 Jansi 加载警告及架构不兼容提示
  • 临时解决方法:手动指定 jansi jar 到类路径即可正常运行

内容的提问来源于stack exchange,提问作者chenzhongpu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:56:05