在Android上使用RESTEasyClient时出现NoSuchMethodError

时间:2018-02-19 14:54:59

标签: java android resteasy nosuchmethoderror

我正在开发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(以解决由此产生的冲突)。我已经尝试了所有这些并且总是遇到gradle的错误或上面提到的NoSuchMethodError

是否可以在Android上成功使用RESTEasyClient?我需要采取哪些步骤才能启用此功能?

1 个答案:

答案 0 :(得分:0)

这一切都归结为版本。 Android版本有点落后,并且在api中没有相同的方法签名。 Apaches建议在构建文件中添加特定版本4.3+。

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