解决新建springboot项目时包导不进来的问题sun.security.provider.certpath.SunCertPathBuilderException: unable to f,已解决

时间:2024-05-23 12:46:18

原文地址:因为不是****社区的,所以直接复制过来了

http://www.fungnotl.cn/2020/02/24/%E7%9C%9F%E6%AD%A3%E8%A7%A3%E5%86%B3Could%20not%20transfer%20artifact%20org.springframework.boot_spring-boot-starter-parent_pom/

发现问题

  • 新建一个springboot项目

  • 此时maven的setting配置文件配置的阿里云的源

  • 发现很多包导不进来,于是reimport,没有效果

  • 于是执行clean命令

  • 报错

    Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:2.2.4.RELEASE from/to alimaven (https://maven.aliyun.com/repository/central): PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

  • 进入报错的网站查找springbootRELEASE2.2.4的包(https://maven.aliyun.com/repository/central)
    解决新建springboot项目时包导不进来的问题sun.security.provider.certpath.SunCertPathBuilderException: unable to f,已解决

  • 发现阿里云还没有2.2.4的包,于是将springboot的版本改成2.1.7
    解决新建springboot项目时包导不进来的问题sun.security.provider.certpath.SunCertPathBuilderException: unable to f,已解决

  • 还是报错

  • 查看报错信息的后半部分

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

  • 找到问题所在

    解决问题(两种方法)

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

  • 在新建maven工程时,会自执行maven的各种命令

  • 在此处设置忽略证书检查
    解决新建springboot项目时包导不进来的问题sun.security.provider.certpath.SunCertPathBuilderException: unable to f,已解决

  • 命令如下

     
    1. Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

第二种方法:手动导入证书

  • 确保maven中setting文件中的阿里源配置正确 (注意url中协议为https!)
 
  1. <mirror>
  2. <id>nexus-aliyun</id>
  3. <mirrorOf>central</mirrorOf>
  4. <name>Nexus aliyun</name>
  5. <url>https://maven.aliyun.com/nexus/content/groups/public</url>
  6. </mirror>

解决新建springboot项目时包导不进来的问题sun.security.provider.certpath.SunCertPathBuilderException: unable to f,已解决

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

    cacerts包含了很多CA证书,位置在Java的安装目录:如: C:\Program Files\Java\jre1.8.0_171\lib\security\carcerts

  • 以管理员身份打开命令提示符(cmd)
  • 进入carcerts所在文件目录
  • 执行命令keytool -import -alias cacerts -keystore cacerts -file d:\ali_maven.cer
  • 默认**库口令:changeit
  • 是否信任此证书?[否]: Y
  • 显示证书已添加到**库中即表示添加成功
  • 回到项目中重新clean,compile,解决

总结

这是非常坑人的地方,没有正确的解决问题会让人十分抓狂
希望踩过的坑及时将它填上