99V久久综合狠狠综合久久|久久se无码精品一区二区|99国产精美欧美一区二区|久久99国产精品亚洲

不同功能jar,同包名同類名沖突解決

2020-03-25 06:35:14  閱讀:-  來源:

原因

項目中需要用到httpClienttika-app相關(guān)jar,在使用httpClient遠程調(diào)用的時候發(fā)現(xiàn)有沖突并且沒有使用maven等其他包管理工具。

java.lang.NoSuchFieldError: INSTANCE at org.apache.http.conn.ssl.SSLConnectionSocketFactory.(SSLConnectionSocketFactory.java:146)
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:964)
at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:56)


SSLConnectionSocketFactory這個類調(diào)用的有問題,由于包名和類名相同,沒有調(diào)用httpClient里的,而是調(diào)用tika-app里的。

解決

1、百度結(jié)果是httpClientjar版本沖突,但是項目中只有一個版本,這是不符合的。但是這種情況是會有。
2、把httpClient相關(guān)的jar包刪除,然后在idea 中(隨便創(chuàng)建一個類或者在其他類的方法中) new SSLConnectionSocketFactory() ,點進去定位當(dāng)前類在哪個jar里。然后定位到tika-app這個jar。
3、tika-app里的org.apache.http這個包,項目中沒有用到,果斷刪掉。
刪除方法 :

7z d tika-app-1.12.jar org/apache/http

7z是一種壓縮和解壓工具。

4、還有一種方法是讓httpClient包在tika-app之前,這樣的話

class在加載的時候先加載前面的,后面的就忽略掉了。(并沒有試成功,我不知道如何讓httpClienttika-app之前加載,忽略后面)