不同功能jar,同包名同類(lèi)名沖突解決
2020-03-25 06:35:14 閱讀:- 來(lái)源:
原因
項(xiàng)目中需要用到httpClient和tika-app相關(guān)jar,在使用httpClient遠(yuǎn)程調(diào)用的時(shí)候發(fā)現(xiàn)有沖突并且沒(méi)有使用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這個(gè)類(lèi)調(diào)用的有問(wèn)題,由于包名和類(lèi)名相同,沒(méi)有調(diào)用httpClient里的,而是調(diào)用tika-app里的。
解決
1、百度結(jié)果是httpClient的jar版本沖突,但是項(xiàng)目中只有一個(gè)版本,這是不符合的。但是這種情況是會(huì)有。
2、把httpClient相關(guān)的jar包刪除,然后在idea 中(隨便創(chuàng)建一個(gè)類(lèi)或者在其他類(lèi)的方法中) new SSLConnectionSocketFactory() ,點(diǎn)進(jìn)去定位當(dāng)前類(lèi)在哪個(gè)jar里。然后定位到tika-app這個(gè)jar。
3、tika-app里的org.apache.http這個(gè)包,項(xiàng)目中沒(méi)有用到,果斷刪掉。
刪除方法 :
7z d tika-app-1.12.jar org/apache/http
7z是一種壓縮和解壓工具。
4、還有一種方法是讓httpClient包在tika-app之前,這樣的話(huà)
class在加載的時(shí)候先加載前面的,后面的就忽略掉了。(并沒(méi)有試成功,我不知道如何讓httpClient在tika-app之前加載,忽略后面)