Gradle 下载失败找不到证书 ValidatorException

问题

在 Android 打包下载 Gradle 是出现异常

在这里插入图片描述

堆栈信息

Exception in thread "main" javax.net.ssl.SSLHandshakeException: 
	sun.security.validator.ValidatorException: PKIX path building failed:
	sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
	at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1937)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)
	at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1478)
	at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:212)
	at sun.security.ssl.Handshaker.processLoop(Handshaker.java:969)
	at sun.security.ssl.Handshaker.process_record(Handshaker.java:904)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1050)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1363)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1391)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1375)
	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
	at sun.net.www.protocol.http.HttpURLConnection.followRedirect0(HttpURLConnection.java:2661)
	at sun.net.www.protocol.http.HttpURLConnection.followRedirect(HttpURLConnection.java:2583)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1769)
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
	at org.gradle.wrapper.Download.downloadInternal(Download.java:78)
	at org.gradle.wrapper.Download.download(Download.java:63)
	at org.gradle.wrapper.Install$1.call(Install.java:68)
	at org.gradle.wrapper.Install$1.call(Install.java:48)
	at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:69)
	at org.gradle.wrapper.Install.createDist(Install.java:48)
	at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:107)
	at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:63)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: 
	sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387)
	at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
	at sun.security.validator.Validator.validate(Validator.java:260)
	at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
	at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
	at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
	at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1460)
	... 22 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException:
	unable to find valid certification path to requested target
	at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:145)
	at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:131)
	at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
	at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)
	... 28 more

解决

1、下载证书

看日志这是 gradle 下载地址

https://services.gradle.org/distributions/gradle-6.5.1-bin.zip

在浏览器访问 https://services.gradle.org/distributions/ 地址,下载证书

在这里插入图片描述
在这里插入图片描述

2、导入证书

  • 查看已有证书

keytool -list -keystore “jdk 路径下的\lib\security\cacerts” > keystore-info.log

例如:
keytool -list -keystore “D:\AndroidStudioLatest\java11\install\lib\security\cacerts” > keystore-info.log

注意:查看和导入证书都需要输入密钥库口令,如果你未曾设置过,默认口令是:changeit

在这里插入图片描述

  • 导入指定证书

keytool -import -keystore “jdk 路径下的\security\cacerts” -file “证书路径”

例如:
keytool -import -keystore “D:\AndroidStudioLatest\java11\install\lib\security\cacerts” -file “C:\Users\QAQ\Downloads\gradle.org.crt”

我发现我本地不同 jdk 版本之间有一个细微的差异:

jdk 11:D:\AndroidStudioLatest\java11\install\lib\security\cacerts

jdk 1.8:C:\Program Files\Java\jdk1.8.0_40\jre\lib\security\cacerts

总之都在 jdk 目录下,找不到时找其他或许能发现

3、检查证书是否导入

在导入证书前,我们先使用查看获取一份已有证书

在导入证书后,再获取一份已有证书

通过对比证书的 SHA-256 是否存在证书列表里判断导入证书成功与否

在这里插入图片描述
在这里插入图片描述

至此,重新打包问题不再出现了!

如果不行,重启一次 Android studio

其他解决方式

如果你不想上面那么‘复杂’的操作,你可以直接在gradle/wrapper/gradle-wrapper.properties更换 gradle 镜像地址即可,快速便捷

  • 腾讯 gradle 镜像

distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-6.5.1-bin.zip

  • 华为 gradle 镜像

distributionUrl=https://mirrors.huaweicloud.com/gradle/gradle-6.5.1-bin.zip

在这里插入图片描述

如果更换镜像不行,最好还是根据上述配置证书,并且重启 Android studio

Eclipse是一个功能强大的开发工具,可以支持多种开发语言,如Java、C++等。而Gradle是一个流行的构建工具,用于自动构建、测试和部署代码。 当我们在Eclipse中使用Gradle,有可能会遇到下载失败的问题。导致下载失败的原因可能有以下几种: 1. 网络连接问题:下载过程中可能出现网络连接不稳定或者断开的情况,导致下载失败。这我们可以尝试重新开始下载,或者检查网络连接是否正常。 2. 服务器问题:Gradle下载可能受到服务器的限制,如果服务器出现故障或者过载,可能会导致下载失败。这我们可以尝试重新下载,或者等待服务器恢复正常。 3. Gradle版本问题:Eclipse中的Gradle插件可能不兼容当前安装的Gradle版本,导致下载失败。我们可以尝试升级或降级Gradle的版本,或者更新Eclipse中的Gradle插件。 4. 配置问题:可能是因为我们的Gradle配置文件中指定的下载源无效或不可用,导致下载失败。这我们可以尝试修改配置文件,指定有效的下载源。 解决下载失败问题的方法包括: 1. 检查网络连接并重新开始下载。 2. 尝试使用其他下载源或者更新Gradle版本。 3. 更新Eclipse中的Gradle插件。 4. 检查Gradle配置文件中的下载源是否有效并进行修改。 总之,对于Eclipse中的Gradle下载失败问题,我们需要仔细排查可能的原因,并采取相应的解决方法。通过确保网络连接稳定,更新Gradle版本或插件,以及修复配置文件中的问题,我们应该能够成功下载并使用Gradle
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值