兩個jar包含相同類怎麼解決?

問題背景:我在工程中引入了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。


如下在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、自己創建所有衝突的類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章