maven依赖httpclient的使用错误及解决方案:
项目需求:
上传文件到阿里OSS
问题总述:
由于所使用的maven依赖的版本低和版本冲突所造成的问题
问题描述:
错误一:java.lang.ClassNotFoundException:org.apache.http.conn.ssl.DefaultHostnameVerifier
百度搜索类:DefaultHostnameVerifier
参考url1:https://www.cnblogs.com/SongG-blogs/p/9549634.html
参考url2:https://blog.****.net/qq_38990795/article/details/103063157
参考url3:https://blog.****.net/loongshawn/article/details/50831890
错误原因:低版本的httpclient(4.3.2)中没有org.apache.http.conn.ssl.DefaultHostnameVerifier,所以报错。解决方案:升级maven依赖httpclient为高一点的版本4.4.1,当然也可以排除依赖
修改后:
注意:jdk1.8中也有这个类,httpclient中也有,而此处需要的是httpclient中的
错误二:java.lang.NoSuchMethodError:org.apache.http.impl.conn.CPool.setValidateAfterInactivity(I)V
错误描述:将httpclient的版本由4.3.2升级为高版本的4.4.1之后,又抛出了这个新的异常:java.lang.NoSuchMethodError:org.apache.http.impl.conn.CPool.setValidateAfterInactivity(I)V
百度搜索异常信息:
java.lang.NoSuchMethodError:org.apache.http.impl.conn.CPool.setValidateAfterInactivity(I)V
参考url:https://blog.****.net/Cheng120636/article/details/80688277
项目中所引用的maven依赖如下:ctrl + 鼠标左键点4.4.1,查看httpclient4.4.1所引用的依赖如下图所示:
项目中显示引用了httpcore4.3.1,然后在httpclient4.4.1中又隐示引用了httpcore4.4.1,版本冲突。
解决方案:将显示引用的httpcore4.3.1给注释掉即可,如下图: