原因
項目中需要用到httpClient和tika-app相關jar,在使用httpClient遠程調用的時候發現有沖突并且沒有使用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這個類調用的有問題,由于包名和類名相同,沒有調用httpClient里的,而是調用tika-app里的。
解決
1、百度結果是httpClient的jar版本沖突,但是項目中只有一個版本,這是不符合的。但是這種情況是會有。
2、把httpClient相關的jar包刪除,然后在idea 中(隨便創建一個類或者在其他類的方法中) new SSLConnectionSocketFactory() ,點進去定位當前類在哪個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在加載的時候先加載前面的,后面的就忽略掉了。(并沒有試成功,我不知道如何讓httpClient在tika-app之前加載,忽略后面)
本文為企業推廣,本網站不做任何建議,僅提供參考,作為信息展示!
推薦閱讀:蘋果7好還是7p好
網友評論
請登錄后進行評論|
0條評論
請文明發言,還可以輸入140字
您的評論已經發表成功,請等候審核
小提示:您要為您發表的言論后果負責,請各位遵守法紀注意語言文明