两个jar包含相同类怎么解决?
问题背景:我在工程中引入了smiley-http-proxy-servletjar包
然后运行报错 java..NoSuchMethodError: org.apache.http.util.EntityUtils.consume(Lorg/apache/http/HttpEntity;)V
给我的第一感觉就是一个jar冲突的问题,引入了这个smiley-http-proxy-servlet依赖之后自动隐式引入了httpcore。
如下在idae中搜索类全限定名org.apache.http.util.EntityUtils。发现有两个jar中都包含了这个。
且二者的version.properties中版本不通。
httpcore-4.4.8.jar 是4.4.8版本;
GMServiceClient-1.0.jar 的httpcore版本是4.0;
因为java运行时去找的版本是httpcore-4.0.jar,而EntityUtils.consume方法在4.0版本中不存在的。因此报错 java..NoSuchMethodError: org.apache.http.util.EntityUtils.consume(Lorg/apache/http/HttpEntity;)V
解决方法
方法1、将smiley-http-proxy-servlet依赖移动到GMServiceClient-1.0.jar依赖之前,这样的话运行时就会去找httpcore-4.4.8.jar 了
方法2、自己创建所有冲突的类