java.lang.ClassNotFoundException: org.apache.http.ssl.TrustStrategy
问题回顾:
启动项目时,遇到如下错误:
二月 25, 2021 8:38:35 上午 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet user threw exception
java.lang.ClassNotFoundException: org.apache.http.ssl.TrustStrategy
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
解决过程:
当时遇到此问题时,就是百度,然后发现网上统一的说法是 TrustStrategy 类所依赖的 httpclient-x.x.x.jar 和 httpcore-x.x.x.jar 太低,调整到高版本就可以了,
但是我发现项目的 pom.xml 文件中没有 httpclient-x.x.x.jar 配置,然后就懵了,不知道下一步该如何做,最后又是一顿百度,发现一种方法,
在项目的 pom.xml 文件下,打开 cmd 命令窗口,运行 mvn dependency:tree -Dverbose 命令,然后查看 httpclient-x.x.x.jar 的依赖关系;
mvn dependency:tree -Dverbose
查看项目依赖的详细信息,此命令会直接输出依赖信息至控制台,可以运行如下命令,把依赖信息写入文件,然后再去查找:
mvn dependency:tree -Dverbose > tree.txt
然后查看 tree.txt 依赖关系时,发现了如下问题:
[WARNING] The POM for x.x:x.x.x:jar:1.1.0 is missing, no dependency information available
然后又是一顿百度,在网上看到把jar包安装到Maven的本地仓库的命令,如下:
mvn install:install-file -Dfile=D:\x.x.x-1.1.0.jar -DgroupId=x.x -DartifactId=x.x.x -Dversion=1.1.0 -Dpackaging=jar
我的系统是 window10 系统,所以一开始用的 PowerShell ,发现一直报错,安装不成功,然后换成了 cmd,直接就成功,谨记千万不要用 PowerShell
然后再次执行 mvn dependency:tree -Dverbose > tree.txt 命令,查看 tree.txt 文件,发现上述的警告日志已经消失,
但是项目还是报错,最后只能问下公司的大神,他只说了一句话,把 httpclient-x.x.x.jar 在 pom.xml 增加一下,然后重新启动项目就OK了,
最后添加的版本是 httpclient-4.5.1.jar
总结:
虽然本次自己未成功解决问题,甚至还有点笑话,但是从此次问题中,也可以发现自己的很多不足,以及查找问题的方向,以后还有很多要学习的地方。
1、首先确认pom.xml文件中是否包含httpclient.jar
2、包含则判断版本是否过低
3、不包含则再pom.xml添加httpclient依赖
1 <dependency> 2 <groupId>org.apache.httpcomponents</groupId> 3 <artifactId>httpclient</artifactId> 4 <version>4.5.1</version> 5 </dependency>