美文网首页
两个jar包含相同类怎么解决?

两个jar包含相同类怎么解决?

作者: 尹楷楷 | 来源:发表于2021-04-25 14:06 被阅读0次

问题背景:我在工程中引入了smiley-http-proxy-servletjar包

    <dependency>
      <groupId>org.mitre.dsmiley.httpproxy</groupId>
      <artifactId>smiley-http-proxy-servlet</artifactId>
      <version>1.7</version>
    </dependency>

然后运行报错 java..NoSuchMethodError: org.apache.http.util.EntityUtils.consume(Lorg/apache/http/HttpEntity;)V

给我的第一感觉就是一个jar冲突的问题,引入了这个smiley-http-proxy-servlet依赖之后自动隐式引入了httpcore。


image.png

如下在idae中搜索类全限定名org.apache.http.util.EntityUtils。发现有两个jar中都包含了这个。


image.png

且二者的version.properties中版本不通。
httpcore-4.4.8.jar 是4.4.8版本;


image.png

GMServiceClient-1.0.jar 的httpcore版本是4.0;


image.png

因为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、自己创建所有冲突的类

相关文章

网友评论

      本文标题:两个jar包含相同类怎么解决?

      本文链接:https://www.haomeiwen.com/subject/vnedrltx.html