У меня есть приложение Java (как проект Maven), которое использует HttpClient (v 4.5) для доступа к REST API, а затем записывает ответ GET в HDFS как JSON , Это прекрасно работает, когда в Eclipse IDE. Вот моя зависимость:java.lang.NoSuchFieldError: INSTANCE в HttpClient при запуске Oozie
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.2.0</version>
</dependency>
Когда я пытаюсь интегрировать его с Oozie, потому что я планирую сделать вызов REST API и HDFS писать периодическими, я сталкиваюсь:
Caused by: 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 com.accenture.pdc.digital.sf.datascience.RestController.<init> RestController.java:26)
at com.accenture.pdc.digital.sf.datascience.App.main(App.java:53)
(RestController.java и App.java - это мои классы). Когда я проследить, проблема заключается в этой строке на моем коде:
CloseableHttpClient httpClient = HttpClients.createDefault();
и на дальнейшем зондирующий в библиотеках исходного кода, там это осуждается:
AllowAllHostnameVerifier.INSTANCE
Когда я искал об этом же проблемах , некоторые говорили, что это может быть конфликт с несколькими версиями HttpClient или HttpCore. Таким образом, потенциальным виновником может быть зависимость HttpClient от hadoop-client (только моя догадка). Как я могу определить, является ли конфликт множественной версии? Если да, то как мне его решить?
Если нет, есть ли альтернативное решение при открытии HttpClient, чтобы избежать этой проблемы? Должен ли я использовать библиотеку, отличную от HttpClient?
Посмотрите на свой класс, чтобы проверить библиотеки. – LEQADA