Подтвердить что ты не робот

NoSuchMethodError при использовании RESTEasyClient на Android

Я разрабатываю приложение для Android и использую библиотеку, которая, в свою очередь, зависит от RESTEasyClient. При использовании библиотеки во время выполнения я получаю NoSuchMethodError:

java.lang.NoSuchMethodError: No direct method <init>(Ljavax/net/ssl/SSLContext;Lorg/apache/http/conn/ssl/X509HostnameVerifier;)V in class Lorg/apache/http/conn/ssl/SSLSocketFactory; or its super classes (declaration of 'org.apache.http.conn.ssl.SSLSocketFactory' appears in /system/framework/ext.jar)
                      at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.initDefaultEngine(ResteasyClientBuilder.java:418)
                      at org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.build(ResteasyClientBuilder.java:333)

Насколько я понимаю, это связано с несовместимостью с реализацией Android Apache HttpClient. Поиск в Интернете, я нашел различные решения, вращающиеся вокруг, включая org.apache.httpconnections:httpclient в зависимостях gradle и добавление compile.exclude module: httpclient (для разрешения возникающего конфликта) в нескольких вариантах. Я пробовал все это и неизменно сталкивался с ошибкой от градиента или NoSuchMethodError упомянутым выше.

Можно ли успешно использовать RESTEasyClient на Android? Какие шаги я должен предпринять, чтобы это сделать?

4b9b3361

Ответ 1

Все сводится к версиям. Версия для Android немного отстает и не имеет одинаковых сигнатур методов в api. Рекомендация Apaches заключается в том, чтобы добавить определенную версию 4. 3+ в файл сборки.

http://hc.apache.org/httpcomponents-client-4.3.x/android-port.html