在SSM项目中使用OSSClient来操作时, 在service层实例化OSSClient
OSSClient client = new OSSClient(Constants.OSS_ENDPOINT,Constants.OSS_ACCESS_KEY_ID,Constants.OSS_ACCESS_KEY_SECRET);(其中Constants是常量类,这三个变量分别是存在常量类里的Endpoint , accesskeyid , accesskeysecret;)
时报错:java.lang.NoSuchMethodError: org.apache.http.conn.ssl.SSLConnectionSocketFactory.(Ljavax/net/ssl/SSLContext;Ljavax/net/ssl/HostnameVerifier;)V,但是很奇怪的是在Main方法中能实例化OSSClient并能进行相关操作。
项目中的httpclient.jar是4.4.1版本的,换了其它版本也不行。
我也遇到这个问题,在本地环境ok,但是发布linux会报这个错。我的项目中除了oss外,也用到了httpclient 3.3.5版。我发现的问题是当我把本地3.3.5版去掉,只保留oss中4.4.1版时,放在linux中tomcat解压,结果发现在webapp中lib下还存在3.3.5的版本和这次打包的4.4.1版本。早果断删掉3.3.5后,服务上图片成功上传。。。。emm原来这个tomcat重新部署启动的时候没有更新包,没有添加清理缓存导致。。。希望我的情况能帮到大家
我也遇到这种情况了,我做了如下操作,不知道是哪块生效了,要是还有人出问题,可以逐个试试
修改pom.xml文件,添加了如下内容
<repositories>
<repository>
<id>sonatype-nexus-staging</id>
<name>Sonatype Nexus Staging</name>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<dependency>
<groupId>com.github.kevinsawicki</groupId>
<artifactId>http-request</artifactId>
<version>6.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-vod</artifactId>
<version>2.2.0</version>
</dependency>
应该是依赖包的子依赖先被加载了导致的!
可以使用mvn dependency:tree获取依赖树
把子依赖从对应的dependency中移除!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。