当前位置: 首页 > ai >正文

SpringBoot项目package报错 PKIX path building failed 终极解决方案:Nexus私服证书导入JDK证书库

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 背景
  • 一、问题分析
  • 二、解决Nexus私服下载依赖时SSL证书验证失败问题
    • 1.临时跳过 SSL 验证(不推荐长期使用)
    • 2.将证书导入 JDK 的信任库(推荐)
    • 3.检查是否使用了公司代理
  • 总结


背景

新安装的社区版 IntelliJ IDEA 2025.2 (Community Edition),打开本地的历史项目文件,package打包报错:
在这里插入图片描述

一、问题分析

首先,检查了一下本地仓库的common依赖包:com.dg.dp.pdrp:common:jar:1.0.0-SNAPSHOT,在本地仓库可以找到依赖包,说明不是本地依赖找不到的原因导致,当然也验证过手动删除本地仓库的common依赖包,再重新从maven私服仓库下载,编译打包还是报同样的错误。
其次,通过后面的打包错误信息(PKIX path building failed: unable to find valid certification path to requested target)可以发现,报错并不是代码本身的问题,而是 Maven 在尝试从公司的Nexus私服(https://mirrors.ddd.com)下载依赖时,SSL证书验证失败导致的。有了大概方向,接下来就是如何解决SSL证书验证失败导致的问题了。

二、解决Nexus私服下载依赖时SSL证书验证失败问题

Java/Maven 无法信任 mirrors.ddd.com 提供的 SSL 证书链 —— 通常是因为:
1.该站点使用了自签名证书 或 内部 CA 签发的证书;
2.本地的 JDK 证书库(cacerts)中没有这个 CA 或证书;
3.本地网络被代理或拦截,替换了证书(如公司代理、Zscaler 等)。
针对验证失败,解决方法有如下三种:

1.临时跳过 SSL 验证(不推荐长期使用)

(1)在 IDEA 的 Maven 配置里添加如下配置:

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

在这里插入图片描述
(2)iIDEA左下角Terminal命令行执行以下命令打包,临时跳过SSL验证:

mvn clean package "-Dmaven.wagon.http.ssl.insecure=true" "-Dmaven.wagon.http.ssl.allowall=true"

注:注意一定要加上引号,否则识别不了命令会报错。
如果以上方法还是无法解决问题,建议使用以下导入证书的方式解决问题。

2.将证书导入 JDK 的信任库(推荐)

下面以 Chrome / Edge(Chromium 内核) 为例,给出在 Windows 系统上把 https://mirrors.ddd.com 的证书导出成 .cer 文件的完整步骤(其他浏览器思路完全一样):
(1)访问https://mirrors.ddd.com,点🔒按钮,选择连接安全:
在这里插入图片描述
(2)点右上角显示证书
在这里插入图片描述
(3)选择查看并导出证书
在这里插入图片描述
(4)将证书文件保存到本地备用
导出文件格式选 “Base64 编码 X.509(.CER)”(可读文本,通用)。

接下来,找到jdk\bin\keytool.exe文件,用 keytool -importcert 导入JDK 的证书文件,打开在 CMD 或 PowerShell 里执行(路径按你的实际修改)命令:

"C:\Program Files\Java\jdk-21\bin\keytool.exe" -importcert ^
-keystore "C:\Program Files\Java\jdk-21\lib\security\cacerts" ^
-storepass changeit ^
-alias dg-mirrors ^
-file "C:\Users\你的用户名\Desktop\mirrors_dg_com.cer"

第一次会提示是否信任此证书? 输入: y 回车即可。

3.检查是否使用了公司代理

如果你公司网络使用了代理(如 Zscaler),它可能会替换证书。你需要:
联系 IT 获取代理的根证书;
导入该证书到 JDK(同方案2);
这里没涉及到,遇到的可以咨询一下公司的网络管理员。
或在 Maven 的 settings.xml 中配置代理(需用户名密码):


总结

遇到问题可以尝试问问kimi、deepseek找找解决问题的思路,然后逐个论证尝试,欢迎评论区交流探讨!

http://www.xdnf.cn/news/19837.html

相关文章:

  • C++对象构造与析构
  • 2.插值法
  • Spring Boot 实现数据库表变更监听的 Redis 消息队列方案
  • 技术方案之Mysql部署架构
  • uni app 的app 端调用tts 进行文字转语音
  • GDAL 下载安装
  • C题目训练【三连击】
  • Vue3 + Ant Design Vue 实现多选下拉组件(支持分组、搜索与标签省略)
  • Ollama大模型 本地部署+使用教程
  • 【FastDDS】Layer DDS之Domain ( 05-Creating a DomainParticipant)
  • lesson53:CSS五种定位方式全解析:从基础到实战应用
  • GEO服务商推荐:移山科技以划时代高精尖技术引领AI搜索优化新纪元
  • C++ 5
  • 使用 Acme.sh 获取和管理免费 SSL 证书
  • 性能测试-jmeter8-脚本录制
  • 网络通信与协议栈 -- TCP协议与编程
  • [Java]PTA:求最大值
  • 财务文档处理优化:基于本地运行的PDF合并解决方案
  • 入行FPGA选择国企、私企还是外企?
  • Ansible高效管理大项目实战技巧
  • 【Python】数据可视化之点线图
  • Android 渐变背景色绘制
  • Git在idea中的实战使用经验(二)
  • 基于SpringBoot的宠物咖啡馆平台
  • 在DDPM(扩散模型)中,反向过程为什么不能和前向一样一步解决,另外实际公式推导时反向过程每一步都能得到一个预测值,为什么还要一步一步的推导?
  • 前端-Vue的生命周期和生命周期的四个阶段
  • 缠论笔线段画线,文华财经期货指标公式,好用的缠论指标源码
  • 特斯拉三代灵巧手:演进历程与核心供应链梳理
  • Spring AI调用sglang模型返回HTTP 400分析处理
  • 前端学习 10-2 :验证中的SV