目录
问题
结尾
终极解决方案
感谢
兼容Eclipse等其他IDE
1、检查语法
2、下载证书
3、导入cer文件
4、结束
首先抛一下我的报错信息吧,引入一个新依赖时,在本地仓库没有时,下载下来一直都是.lastUpdated 文件,并且控制台报错
Could not transfer artifact org.apache.commons:commons-lang3:pom:3.7 from/to nexus-aliyun (http://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
大概意思就是访问仓库找不到所请求目标的有效证书路径.......
what?为什么莫名会有这个问题,于是疯狂百度看看有什么好的解决方案,结果看了N篇文章,大体都是说要在jre中导入对应网站的证书,开始是嫌弃的,为什么我之前都不用管这些证书问题xxxxxx,最后实在没办法了,试试吧,于是试了2,3遍后,我还特意重启idea,重启系统这种“万能”的方式都试了,结果结论是对我没效果[以下是我试过的链接]
https://blog.csdn.net/qq_33261885/article/details/104501130
https://blog.csdn.net/i_like1/article/details/80334298#comments
接着又开始新一轮百度,搜搜maven依赖包下载不了的种种解决方案......于是找到以下一篇汇总贴。 这篇帖子希望对有些人有效,但是这篇帖子的全部方式我都试过了,对我没效果(运气太差了......)
https://blog.csdn.net/jwcxs_m/article/details/80076909
接着,自己不断的尝试中,在这篇帖子的基础上
https://blog.csdn.net/xxaann/article/details/104794669
终于琢磨出自己的解决方案。
1、先对项目进行clean
2、再对项目进行install
3、刷新项目
此时发现本地仓库已经下载下来了这个jar包
然后发现一个问题,侧边的maven工具栏还有红色波浪线还没有清除。此时只需要把大依赖标签
在网上还看到在idea的maven侧边栏中执行如下命令也可以下载jar包下来
mvn -U idea:idea
mvn dependency:sources
看到的老铁也可以试试以上两种 解决方案
华丽的分割线
--------------------------------------------------------------------------------------------------------------------------------------------------------------
2020.4.19号
日思夜想,心里总是膈应,以上那种方法太麻烦了,每次新增本地仓库没有的jar包都要clean 在install......于是一直在百度,看看到底还有哪种方式我是没有试过的。。。终于让我找到了终极解决方法
在Idea的File -->settings中,设置Maven的importing和Runner参数,忽略证书检查即可。(Eclipse下解决原理类似,设置maven运行时参数即可)
具体参数:
-Dmaven.multiModuleProjectDirectory=$MAVEN_HOME -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true
以上步骤后,在idea中执行maven插件中的各种命令即可恢复正常!
以上亲测可以。
超级感谢这篇博主!!!
https://my.oschina.net/ghw/blog/3236131
==================华丽的分割线=====================
2020.4.21
因为电脑同时安装了idea和eclipse,上面的那种方式讲了idea的终极解决方法,但是切换到eclipse之后,你创建maven工程还是会报那个错,这就很不爽了,那有没有彻底解决这种问题的方案呢?我今天又稍微研究了下。发现归根到底其实就是因为自己的Java环境没有相关网站的证书而导致的。 那解决方法导入相关网站的证书不就可以了吗??但是我之前找到好多篇博客导入证书貌似是没有效果的。这就匪夷所思了,但是你细心观察一下。发现他们执行的命令怎么有些许的不同?那这就是问题所在了,每个人用的java版本不同,语法有些不同,所以这才会导致你明明显示已经导入成功了,为什么还是会报找不到所请求目标的有效证书路径 ,那么知道问题所在了,那么就可以进行以下操作了!
导入证书之前keytool -help看一下最新的导入语法
比如你maven配置的是阿里的镜像仓库
http://maven.aliyun.com/nexus/content/groups/public
之后点击下一步----》文件名随便命名就行了。这时候他会生成xxx.cer文件。
具体命令
keytool -importcert -noprompt -trustcacerts -alias xxx(你想要导入的别名) -file "C:\Program Files\Java\jdk1.8.0_221\jre\lib\security\xxx.cer(你的文件的地址)" -keystore "C:\Program Files\Java\jdk1.8.0_221\jre\lib\security\cacerts" -storepass changeit
比如我电脑安装的是java8我根据上面 查的语法。我导入导入证书的命令也是 -importcert,所以我执行的命令是
keytool -importcert -noprompt -trustcacerts -alias alicert -file "D:\JAVA\cert\ali_cert.cer" -keystore "D:\JAVA\JAVA8\jre\lib\security\cacerts" -storepass changeit
这时候你再试试你的eclipse,你创建maven工程,随便导入一个本地仓库没有的jar包,你会惊奇的发现会下载成功了!
参考链接
https://my.oschina.net/u/4409332/blog/3291298