HTTP-клиент Java - нет такой ошибки поля
Я пытаюсь использовать Java-библиотеку Digital Ocean и при попытке установить соединение с:
CloseableHttpClient httpClient = HttpClients.createDefault();
client = new DigitalOceanClient("v2", token, httpClient);
Проблема заключается в CloseableHttpClient httpClient
объект. Библиотека использует httpcore версии 4.4.1 и httpclient версии 4.5. Это дает мне java.lang.NoSuchFieldError.
Вот мой журнал:
Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:955)
at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:58)
at main.java.servers.DigitalOceanServer.setup(DigitalOceanServer.java:28)
Я нашел мало информации и документации по NoSuchFieldError, поэтому я предполагаю, что это связано с версией httpcore и / или httpclient, которая вызывает эту ошибку.
1 ответ
Переменная поля INSTANCE
был введен в AllowAllHostnameVerifier.java начиная с версии Apache httpclient 4.4.
- AllowAllHostnameVerifier версии 4.3.6
- AllowAllHostnameVerifier версии 4.4.0
- SSLConnectionSocketFactory версии 4.3.6
- SSLConnectionSocketFactory версии 4.4.0
Если обе новые версии SSLConnectionSocketFactory
и старая версия AllowAllHostnameVerifier
используется, то java.lang.NoSuchFieldError: INSTANCE
брошен
Одна из возможных причин - две версии Apache httpclient jar находятся в каталоге вашей библиотеки.