【发布时间】:2018-02-19 14:54:58
【问题描述】:
我正在开发一个 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 实现不兼容。在网上搜索,我发现了各种解决方案,包括在 gradle 依赖项中的org.apache.httpconnections:httpclient 和在几个变体中添加compile.exclude module: httpclient(以解决由此产生的冲突)。我已经尝试了所有这些,并且总是遇到来自 gradle 的错误或上面提到的NoSuchMethodError。
是否可以在Android上成功使用RESTEasyClient?我需要采取哪些步骤才能启用此功能?
【问题讨论】:
-
分享你的代码。
-
RESTEasy 不应该只在 JBoss EAP 中使用,因为所有的实现都是由服务器运行时提供的。
-
分享你的gradle/maven
标签: java android resteasy nosuchmethoderror