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

Apple M1 Mac运行Python脚本提示已存在的libjli.dylib找不到OSError

报错原因
  • 架构不兼容:你本地安装的JDK 1.8.0_301为x86_64架构版本,Apple M1芯片为arm64架构,未开启Rosetta 2兼容时,系统无法加载x86架构的dylib动态库,哪怕文件真实存在也会抛出找不到的报错。
  • 环境变量冲突:你的PATH优先级最高的是Homebrew安装的arm64架构OpenJDK 17,但Python调用JVM的依赖库(如JPype)默认读取的是系统默认的JDK 8路径,两套JDK架构不匹配导致加载失败。
  • 系统权限校验拦截:MacOS Big Sur对/Library目录下的动态库有签名和隔离属性校验,JDK 8的libjli.dylib可能因未通过签名校验被系统拦截,无法被Python进程加载。
排查步骤
  • 校验动态库架构:执行命令lipo -info /Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home/jre/lib/jli/libjli.dylib,确认输出为x86_64还是arm64架构。
  • 确认当前生效的JAVA_HOME:执行命令/usr/libexec/java_home,检查输出路径是否和报错中的JDK 8路径一致,是否未指向适配arm64的Homebrew OpenJDK 17。
  • 校验Python进程架构:执行命令python3 -c "import platform; print(platform.machine())",确认Python运行的架构和要加载的JDK架构一致。
解决方法

方案1:修复架构不兼容问题

  • 若必须使用JDK 8:下载适配arm64架构的JDK 8发行版替换原有x86版本JDK 8即可。
  • 临时兼容方案:右键终端.app -> 显示简介 -> 勾选「使用Rosetta打开」,重启终端后再运行Python脚本,通过兼容层加载x86架构的JDK动态库。

方案2:修复环境变量冲突

  • 统一JDK版本:在~/.zshrc配置文件中添加export JAVA_HOME=$(/usr/libexec/java_home -v 17),执行source ~/.zshrc生效,让JVM依赖库优先使用适配arm64的OpenJDK 17。
  • 显式指定JVM路径:如果使用JPype等库调用JVM,可在代码中直接指定正确的动态库路径,示例:
import jpype
jpype.startJVM(jvmpath="/opt/homebrew/opt/openjdk/libexec/openjdk.jdk/Contents/Home/lib/jli/libjli.dylib")

方案3:修复系统权限拦截

执行命令sudo xattr -d com.apple.quarantine /Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk,移除JDK的隔离属性,绕过签名校验拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:30:04