项目场景:
项目中需要用到第三方maven库pom配置如下,配置后一直无法生效相关jar包还是从ali资源库下载,参考:在pom文件中设置repository不生效问题的解决_pom repository 无效_lifeohcaro的博客-CSDN博客还是没有生效!,最后还是看idea日志才发现问题。
<repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
</repositories>
maven settings.xml配置如下
<mirror>
<id>aliyunmaven</id>
<mirrorOf>central,!cloudera</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
问题描述
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Java在访问SSL加密的网站时,需要从JDK的KeyStore 里面去查找相对应得可信证书,如果不能从默认或者指定的KeyStore 中找到可信证书,就会报这个错误。
查看idea日志:
Caused by: java.lang.RuntimeException: org.eclipse.aether.resolution.ArtifactResolutionException: Failure to transfer Impala:ImpalaJDBC42:pom:2.6.29.1035
from https://repository.cloudera.com/artifactory/cloudera-repos/ was cached in the local repository, resolution will not be reattempted until the update interval of cloudera has elapsed or updates are forced. Original
error: Could not transfer artifact Impala:ImpalaJDBC42:pom:2.6.29.1035 from/to cloudera (https://repository.cloudera.com/artifactory/cloudera-repos/):
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:453)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:255)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:232)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:268)
... 33 more
解决方案:
从浏览器下载证书安装到java证书中:
1.下载证书
导出证书到本地保存
保存到本地
2.导入证书
cmd 执行下面命令
***JDK如果安装在C盘的请以管理员身份运行
keytool -import -file "DigiCert Global Root G2.crt" -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -alias cloudera-repos
其中:
-alias 指定别名
-keystore 指定存储文件(此处固定)
-file 指定刚下载证书文件全路径(我这里因为证书保存在D盘命令直接在D盘敲得)
***此时命令行会提示你输入cacerts证书库的密码,敲入changeit即可,这是java中cacerts证书库的默认密码。
查看已安装证书
keytool -list -keystore "%JAVA_HOME%\jre\lib\security\cacerts" | findstr /i cloudera-repos
我这边证书之前已安装,所以显示重复问题(不影响)。
重启idea 刷新maven引入需要的jar,ok!大功告成...
最后一句:查找问题还是要看日志,折磨的都快放弃了!!!