我有以下配置:
Gradle build开始在我的所有项目中报告错误,所以我猜它与特定的项目配置(build.gradle等)无关。
相同的项目在Windows上的相同Android Studio、Gradle和JDK版本上正常构建和工作。
我已经尝试过但没有帮助的步骤:
错误详细信息:梯度同步失败:原因:无法找到到请求目标的有效证书路径
FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring root project 'name-of-the-project'. > Could not resolve all artifacts for configuration ':classpath'. > Could not resolve com.android.tools.build:gradle:4.1.1. Required by: project : > Could not resolve com.android.tools.build:gradle:4.1.1. > Could not get resource 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/4.1.1/gradle-4.1.1.pom'. > Could not GET 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/4.1.1/gradle-4.1.1.pom'. > sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target > Could not resolve com.google.gms:google-services:4.3.4. Required by: project : > Could not resolve com.google.gms:google-services:4.3.4. > Could not get resource 'https://dl.google.com/dl/android/maven2/com/google/gms/google-services/4.3.4/google-services-4.3.4.pom'. > Could not GET 'https://dl.google.com/dl/android/maven2/com/google/gms/google-services/4.3.4/google-services-4.3.4.pom'. > sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target > Could not resolve com.google.firebase:firebase-crashlytics-gradle:2.4.1. Required by: project : > Could not resolve com.google.firebase:firebase-crashlytics-gradle:2.4.1. > Could not get resource 'https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-crashlytics-gradle/2.4.1/firebase-crashlytics-gradle-2.4.1.pom'. > Could not GET 'https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-crashlytics-gradle/2.4.1/firebase-crashlytics-gradle-2.4.1.pom'. > sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
这似乎是一个网络问题,但我尝试使用不同的连接解决方案与不同的供应商,有和没有VPN。
所有提到的文件都可以访问,我可以使用wget从终端下载它们
wget https://dl.google.com/dl/android/maven2/com/google/gms/google-services/4.3.4/google-services-4.3.4.pom --2021-03-04 12:42:32-- https://dl.google.com/dl/android/maven2/com/google/gms/google-services/4.3.4/google-services-4.3.4.pom Resolving dl.google.com (dl.google.com)... 216.58.214.206 Connecting to dl.google.com (dl.google.com)|216.58.214.206|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 1576 (1,5K) [application/octet-stream] Saving to: ‘google-services-4.3.4.pom.1’ google-services-4.3.4.pom.1 100%[=====================================================================================>] 1,54K --.-KB/s in 0s 2021-03-04 12:42:32 (11,3 MB/s) - ‘google-services-4.3.4.pom.1’ saved [1576/1576]
没有获得有效的证书路径还有另一个可能的原因。在gradle构建中使用的各种插件不一定使用包含证书的信任存储来验证有问题的证书的真实性。在我的例子中,我可以使用浏览器与给定的服务器进行通信,而不会出现证书验证错误,但我无法使用“maven publish”插件进行通信。为什么,因为他们使用不同的信任存储进行证书验证。“maven发布”使用java配置为使用的信任存储。默认位置在目录$JAVA_HOME/jre/lib/security中。浏览器正在使用您的操作系统信任库。可以使用系统属性更改java信任存储:
javax.net.ssl.trustStore,
javax.net.ssl.trustStorePassword
javax.net.ssl.trustStoreType
您可以使用以下格式在gradle.properties文件中设置它们:
systemProp.javax.net.ssl.trustStore={path to your truststore}
您也可以在You build.gradle中设置它们。使用此格式的kts脚本:
System.setProperty("javax.net.ssl.trustStorePassword", "{your truststore password")
经过进一步研究……出于某种原因,MacOS网络代理设置被更改,这就是Android Studio发出警告的原因:
您将JVM属性“https.proxy主机”设置为“localhost”......
要解决这个问题,请转到
系统首选项/网络/高级(适用于您正在使用的网络)/代理
取消选择Web代理和安全Web代理
我已经被完全相同的错误困扰了好几天,和你一样,我几乎什么都试过了。
最后我注意到Android Studio中的一些东西。我去了Http代理首选项选项卡,看到一条消息说
您将JVM属性“https.proxy主机”设置为“localhost”......
我试图通过添加以下行来覆盖此值:
systemProp.https.proxyHost=
在我的gradle项目中。属性文件和tadaaa!它起作用了,但我真的不明白发生了什么。。。
希望能有所帮助;)
我正在使用restTemplate发出post请求,并收到以下错误:无法找到到请求目标的有效证书路径 我的方法如下:
问题内容: 我有一个可以从https服务器下载文件的类。当我运行它时,它返回很多错误。我的证书似乎有问题。是否可以忽略客户端服务器认证?如果是这样,怎么办? 错误: 问题答案: 当你的服务器具有自签名证书时,会出现此问题。要解决此问题,你可以将此证书添加到JVM的受信任证书列表中。 在本文中,作者描述了如何从浏览器中获取证书并将其添加到JVM的cacerts文件中。你可以使用-参数编辑文件或运行应
我在Flutter中创建了一个新应用程序。我尝试在Android Mobile上运行该应用程序。它显示在错误下方。 但当我试图在Chrome或Edge(网络设备)上运行同样的程序时。它在跑。
我只是安装Android Studio 3.1.3,因为认证问题,我只是将工作室降级到3.0.1版本,即使我得到了认证问题,当我尝试创建一个项目时,问题就出现了,我得到了认证问题,比如“Gradle同步失败:找不到到请求目标的有效认证路径” 我不明白是什么原因导致了这个问题。
我最近为我的maven repo(Apache代理背后的人工制品)切换到了letsencrypt证书。通过浏览器访问回购协议工作正常,证书没有问题(下面的屏幕截图)。 如果我手动将证书导入到java密钥库中,它也可以工作。 但是根据这个SO问题,Java应该接受以8u101开头的lets加密证书。 我总是遇到这样的例外:
首先,我知道以前有人问过这个问题,但我尝试了提出的解决方案,但没有结果。 我正在尝试用java开发一个简单的程序,它连接到一个网站,并从那里托管的文本文件中读取。一开始我以为证书会造成问题,因为在没有收到警告的情况下,我无法在firefox上打开网站。Internet explorer不会产生任何问题。代码如下: 我尝试的第一件事是Java提供的解决方案:sun.security.provider