maven项目中启动web报:java.lang.NoClassDefFoundError: org/apache/http/ssl/TrustStrategy
问题复现:
1.maven项目中引入阿里云sdk
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.5.0</version>
</dependency>
项目启动报:java.lang.NoClassDefFoundError: org/apache/http/ssl/TrustStrategy
原因:因为阿里云sdk自动依赖了httpclient-4.4.1和httpcore-4.4.1跟项目中引入的httpclient其他版本冲突了。
选择工程pom.xml执行命令:dependency:tree -Dverbose查看工程依赖树结构:
看截图信息发现阿里云依赖的httpclient-4.4.1,而项目中又有httpclient-4.5.2,httpclientjar版本冲突
备注:不能仅仅是dependency:tree这个命令,因为这样看不出深层次的依赖引用关系,后面必须加上-Dverbose.
解决方法:
方法一:删除其他版本的httpclient,如下截图,httpclient版本除了阿里云sdk依赖的没有其他版本。
方法二:添加阿里云sdk排除httpclient依赖:
<!-- OSS Java SDK -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.5.0</version>
<exclusions>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</exclusion>
</exclusions>
</dependency>
过滤掉后,重新执行dependency:tree -Dverbose得到依赖树httpclient版本只有4.4.1,然后对工程maven update,然后对工程的pom.xml执行clean install
最后重新部署项目后冲突解决。