java.lang.NoSuchMethodError: INSTANCE org.apache.http.conn.ssl.SSLConnectionSocketFactory报错解决
sprintboot项目,因为项目需要上传文件至阿里云。引入了阿里云sts的sdk。
<dependency>
<groupId>com.aliyun.oss</groupId>j
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
项目中原来就用过阿里云sts的sdk,版本较老2.8的版本。因为种种原因,有两年没有用过相关功能了。所以这次升级了sdk版本。
本来以为是个简单的功能。老版本sdk也是我接入的么,没啥问题。
万万没想到!!!本地idea里面开发跑的好好的。通过jekins打包发版到测试环境上ossClient初始化报错了!!!
报错内容:
java.lang.NoSuchMethodError: org.apache.http.conn.ssl.SSLConnectionSocketFactory.(Ljavax/net/ssl/SSLContext;Ljavax/net/ssl/HostnameVerifier;)V at com.aliyun.oss.common.comm.DefaultServiceClient.createHttpClientConnectionManager(DefaultServiceClient.java:244) at com.aliyun.oss.common.comm.DefaultServiceClient.(DefaultServiceClient.java:85) at com.aliyun.oss.OSSClient.(OSSClient.java:209) at com.aliyun.oss.OSSClient.(OSSClient.java:129)
百度后,大部分人说是jar冲突了。oss的sdk要求的httpclient的版本是4.4.1,把版本改成4.4.1及以上就好了。
我们项目的httpclient版本就是4.4.1。改成了4.5.2,放在服务器上还是报错。
继续百度,查了一星期,终于看到一个大佬文章,可能时引入的其他包本地包重写了这个类的方法,一去看,果然是这样,由于需要,本地引入了android.jar,其中的org.apache.http.conn.ssl.SSLConnectionSocketFactory.被重写覆盖了,导致打包合并了之后这个类被覆盖,sts 引用时报错,解决:
在android.jar中删除掉这个类;
打包测试,完美解决;