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? Какие шаги я должен предпринять, чтобы это сделать?
Ответы
Ответ 1
Все сводится к версиям. Версия для Android немного отстает и не имеет одинаковых сигнатур методов в api. Рекомендация Apaches заключается в том, чтобы добавить определенную версию 4. 3+ в файл сборки.
http://hc.apache.org/httpcomponents-client-4.3.x/android-port.html