1.创建springboot项目
创建好一个springboot项目或者从GitHub上拉取下来的项目,发现pom.xml里spring-boot-starter-parent报错,很多依赖包无法引入,也无法clean,会出现could not transfer artifact,无法从maven镜像里拉取包,从后面错误信息里发现(sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target)无法找到到请求目标的有效认证路径,意思是服务器提供的证书不被我们客户端信任
2.解决办法
1.第一种方法:在执行maven命令时忽略证书检查
在setting里找到runner里设置忽略证书检查,添加上
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true
2.第二种方法:手动将安全证书导入到java的cacerts证书库
确保自己的maven镜像库是正确的,用谷歌浏览器打开自己的maven镜像链接https://maven.aliyun.com/repository/public
1.点击证书
2.点击详细信息,然后点击复制到文件
3.点击下一步
4.选择base64编码,点击下一步
5.选择设置导出证书保存的位置和名字,后面要用
6.点击完成后,就可以导出证书到前面设置的位置中
7.以管理员身份打开命令提示符(cmd),进入到电脑配置的jjdk的jre\lib\security的目录下
8.在上面的目录里输入该命令:keytool -import -alias aliMaven -keystore cacerts -file D:\aliMaven.cer
解释下:
-alias 指定别名(推荐和证书同名)
-keystore 指定存储文件(此处固定)
-file 指定证书文件全路径(证书文件所在的目录)
注意:当切换到 cacerts 文件所在的目录时,才可指定 -keystore cacerts, 否则应该指定全路径;
9.输入默认的密钥库口令:changeit
10.是否信任此证书?: Y
11.显示证书已添加到密钥库中即表示添加成功,如果出现keytool 错误: java.io.FileNotFoundException: cacerts (拒绝访问)
出现这个问题的主要原因是
C:\Program Files以及C:\Program Files(x86)都是只有管理员权限才能访问的目录,所有写、修改操作都会遭遇”拒绝访问”,解决方案有两种:
1、将JDK安装在D盘
2、使用管理员权限打开命令行
12.回到项目中重新clean,complie,install,再次刷新下maven,解决问题
注意如果证书添加成功后,clean还是报错,请清除下工具缓存并重启工具
13.想要更新证书的话,先删除原来的,再重新导入即可
1.先查看证书,密钥仍然是changeit
keytool -list -keystore cacerts -alias aliMaven
2.删除证书
keytool -delete -alias aliMaven -keystore cacerts
3.总结
第一种方法,每次运行一个新项目的时候,都要进行配置才行,第二种方法,只需要添加一次证书,证书添加成功后,后面运行新项目,就不用再进行其他设置了,可以根据个人情况进行选择