创建SpringBoot项目出现的问题(Could not transfer artifact org.springframework.boot:spring-boot-starter-parent)

前言:之前创建SpringBoot项目也出现过此问题,但是换了一个maven仓库好使了,但是没过多久那个仓库访问不了了,然后项目就开始报错。这几天自己创建项目又出现了这个问题,感觉再不彻底解决,人都不好了。

一、问题描述

       通过Spring Initializer创建SpringBoot项目,发现出现了问题,我首先检查的是maven的settings的配置文件,发现其中配置的是阿里云的仓库,配置是没有问题的,但是包还是导入不进去,reimport也没有效果。执行clean命令显示的是如下的错误:

        Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:2.2.0.RELEASE from/to nexus-aliyun (https://maven.aliyun.com/nexus/content/groups/public): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

有图有真相:

创建SpringBoot项目出现的问题(Could not transfer artifact org.springframework.boot:spring-boot-starter-parent)_第1张图片

二、查找问题原因

进入报错的网站查找springbootRELEASE2.2.0的(https://maven.aliyun.com/repository/central)

创建SpringBoot项目出现的问题(Could not transfer artifact org.springframework.boot:spring-boot-starter-parent)_第2张图片

显而易见,是有这个包的。后来换了其他的版本,还是这个德性,由此可见并不是版本的问题。

然后针对报错信息的后半部分进行研究,找到问题的解决方法。

后半部分报错信息:

        sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target(无法找到有效的证书)

意思就是服务器提供的证书不被我们客户端信任。

三、解决方法(两种方法)

第一种方法:在执行maven命令时忽略证书检查

在此处设置忽略证书检查

创建SpringBoot项目出现的问题(Could not transfer artifact org.springframework.boot:spring-boot-starter-parent)_第3张图片

忽略证书检查的命令:

-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true

亲测好使:

创建SpringBoot项目出现的问题(Could not transfer artifact org.springframework.boot:spring-boot-starter-parent)_第4张图片

第二种方法:手动导入证书,即将安全证书导入到java的cacerts证书库

确保maven中settings.xml中的阿里源配置正确


   nexus-aliyun
   central
   Nexus aliyun
   https://maven.aliyun.com/nexus/content/groups/public

打开阿里源的网址:https://maven.aliyun.com/nexus/content/groups/public或https://maven.aliyun.com/repository/central(都是一样的)

在chrome浏览器下载证书到本地

创建SpringBoot项目出现的问题(Could not transfer artifact org.springframework.boot:spring-boot-starter-parent)_第5张图片

根据以下步骤,一直next,将文件命名为ali_maven,后缀默认为.cer,保存到D盘根目录

创建SpringBoot项目出现的问题(Could not transfer artifact org.springframework.boot:spring-boot-starter-parent)_第6张图片

设置导出证书的编码格式:

创建SpringBoot项目出现的问题(Could not transfer artifact org.springframework.boot:spring-boot-starter-parent)_第7张图片

通过证书添加java信任证书库

(1)打开C:\Program Files\Java\jdk1.8.0_121\jre\lib\security目录。(cacerts包含了很多CA证书,位置在Java的安装目录:如: C:\Program Files\Java\jdk1.8.0_121\jre\lib\security\carcerts)

(2)在该目录下以管理员身份打开命令提示符(cmd)

(3)输入该命令:keytool -import -alias cacerts -keystore cacerts -file d:\ali_maven.cer

(4)输入默认的密钥库口令:changeit

(5)是否信任此证书?[否]:Y

(6)显示证书已添加到密钥库中即表示添加成功

(7)回到项目中重新clean,complie,解决问题。

四、总结

第一种方法感觉治标不治本,只是针对当前的项目来说是可以的,但是每次创建项目加那个配置比较麻烦,对比第二种方法包导入的速度比较慢,而且下次再创建项目也不需要再做配置。建议使用第二种方法,问题解决的十分彻底。

你可能感兴趣的:(java)