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

Mac系统下sbt启动失败,报Sun证书相关错误

解决Mac上sbt启动PKIX证书错误的实操方案

我之前帮朋友解决过几乎一模一样的问题——在非企业防火墙的Mac环境下启动sbt时遭遇PKIX证书路径构建失败的报错,核心原因大多是Java信任证书库未包含目标仓库的证书,或是sbt实际使用的JDK与预期不一致导致的,下面是亲测有效的解决步骤:

1. 先确认sbt绑定的JDK版本

很多时候问题出在sbt用了你没留意的JDK版本,先搞清楚它用的是哪个:

  • 打开终端执行:sbt -java-home,会显示当前sbt使用的JDK完整路径
  • 如果路径不符合预期,手动指定正确的JDK环境变量:
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/[你的JDK版本文件夹]/Contents/Home
    
    比如我的JDK 1.8路径是/Library/Java/JavaVirtualMachines/jdk1.8.0_301.jdk/Contents/Home,设置完再启动sbt试试。

2. 手动将仓库证书导入Java信任库

如果JDK没问题,那就是目标仓库的证书没被Java信任,需要手动导入:

步骤1:下载仓库证书

以repo.typesafe.com为例:

  • 用Safari访问https://repo.typesafe.com,点击地址栏左侧的锁图标 → 选择「显示证书」→ 把证书图标拖到桌面,保存为typesafe.cer
  • 用同样的方法下载其他报错仓库的证书(repo.scala-sbt.org、artifactory.dkandu.me)

步骤2:导入证书到Java cacerts库

Java信任库默认路径:

  • JDK 8及以下:$JAVA_HOME/jre/lib/security/cacerts
  • JDK 11+:$JAVA_HOME/lib/security/cacerts
    默认密码是changeit,执行导入命令:
sudo keytool -import -alias typesafe -keystore $JAVA_HOME/jre/lib/security/cacerts -file ~/Desktop/typesafe.cer

对其他证书重复操作,注意把alias改成不同的标识(比如scala-sbt、artifactory),对应各自的证书文件。

步骤3:验证导入结果

执行命令查看是否成功导入:

keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts | grep -i typesafe

能看到对应输出就说明导入成功了。

3. 排查意外的代理配置(非防火墙环境也建议确认)

有时候不小心遗留的代理配置会干扰证书验证,检查这两个文件:

  • ~/.sbt/repositories:如果有代理相关配置,直接注释或删除
  • ~/.sbt/0.13/global.sbt(对应你的sbt 0.13.17版本):看看有没有System.setProperty("http.proxyHost", ...)这类代码,有的话删掉

4. 清理sbt缓存重试

缓存的旧证书可能导致异常,清理后重新启动:

rm -rf ~/.sbt ~/.ivy2/cache

之后再运行sbt测试。

我当时就是按这个流程帮朋友解决问题的,你可以一步步尝试,重点关注证书导入和JDK版本确认这两步,大概率能解决你的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:52:34