Apache HttpAsyncClient抛出NoSuchMethodError

时间:2012-12-02 01:42:11

标签: java android apache httpclient

执行时:Future<HttpResponse> future = myHttpAsyncClient.execute(post, null); 我明白了:

12-02 02:22:03.567: W/dalvikvm(6392): threadid=13: thread exiting with uncaught exception (group=0x40b5c930)

...

Caused by: java.lang.NoSuchMethodError: org.apache.http.client.utils.URIUtils.extractHost
12-02 02:22:03.606: E/AndroidRuntime(6392):     at org.apache.http.impl.nio.client.AbstractHttpAsyncClient.determineTarget(AbstractHttpAsyncClient.java:594)

...

我发现了这个问题:Apache HttpAsyncClient - NoSuchMethodError - URIUtils.extractHost但我还没有正确理解我要采取哪些措施来解决问题。谢谢

1 个答案:

答案 0 :(得分:3)

不幸的是,android内部httpcore和外部httpasyncclient库存在不兼容问题。 Android依赖于旧版本的httpcore。即使您使用较新版本的应用程序导出应用程序,Android仍然使用内部版本,因​​为相同的软件包。

所以可能的解决方案是:

  • 使用maven shade插件将所有类的httpasyncclient及其依赖项重定位到另一个包结构,并将其与您的应用程序一起导出。
  • 使用等同的库,例如android-async-http