NoSuchMethodError when using RESTEasyClient on Android
Asked Answered
A

1

16

I am developing an Android app and using a library that in turn depends on RESTEasyClient. When using the library at runtime, I get a 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)

As I understand it, this is because of an incompatibility with Android's implementation of Apache HttpClient. Searching online, I have found various solutions revolving around including org.apache.httpconnections:httpclient in the gradle dependencies and adding compile.exclude module: httpclient (to resolve the resulting conflict) in several variations. I have tried all these and invariably run into either an error from gradle or the NoSuchMethodErrormentioned above.

Is it possible to successfully use RESTEasyClient on Android? What steps do I need to take to enable this?

Abri answered 19/2, 2018 at 14:54 Comment(3)
share your code.Epoch
Isn't RESTEasy meant to be used in JBoss EAP only, as all implementations are provided by the Server Runtime.Photogenic
Share you gradle/mavenVereeniging
C
1

It all comes down to versions. The android version is a bit behind, and has not the same method signatures in the api. Apaches recommendation is to add a specific version 4.3+ in the build file.

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

Civics answered 7/6, 2018 at 13:12 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.