安装sbt后运行报错SunCertPathBuilderException的解决求助
解决sbt首次运行SSL证书路径错误的方案
问题本质
这个错误是JVM无法验证sbt仓库的SSL证书导致的,和sbt的安装方式无关(所以重装sbt无法解决),通常是系统缺少对应根证书,或是JVM的证书库未包含仓库所需证书。
解决步骤
1. 定位当前使用的JDK证书库
先确认你正在使用的JDK版本:java -version
找到JDK安装目录下的lib/security/cacerts文件(比如OpenJDK的典型路径是/Library/Java/JavaVirtualMachines/openjdk-xx.jdk/Contents/Home/lib/security/cacerts)。
2. 手动导入仓库根证书
- 获取证书:打开浏览器访问sbt的maven仓库地址(比如
https://repo1.maven.org/maven2/org/scala-sbt/sbt/1.9.7/),点击地址栏的锁图标,导出根证书(格式选PEM或DER)。 - 导入证书到JVM证书库:执行以下命令,替换路径为你的实际文件路径:
默认cacerts密码是sudo keytool -importcert -file /path/to/your/certificate.crt -alias sbt-repo-cert -keystore /path/to/jdk/lib/security/cacertschangeit,输入密码后确认导入即可。
3. 临时绕过证书验证(仅用于测试,不推荐生产环境)
如果只是临时调试,可以在运行sbt时添加JVM参数跳过SSL验证:SBT_OPTS="-Djavax.net.ssl.trustStore=/path/to/jdk/lib/security/cacerts -Djavax.net.ssl.trustStorePassword=changeit -Dssl.allowuntrusted=true" sbt
也可以修改sbt全局配置文件~/.sbt/repositories,将仓库地址替换为HTTP协议(比如http://repo1.maven.org/maven2/),但这会降低传输安全性。
4. 检查代理环境
如果你在代理网络下,可能是代理拦截了SSL证书。尝试临时关闭代理,或确认代理的证书配置已正确添加到系统/ JVM证书库中。
内容的提问来源于stack exchange,提问作者Rey Zhang
相关产品推荐
相关产品推荐

