在Android中使用HttpClient 4.3.x出现NoSuchFieldError的问题

来源:互联网 发布:小q书桌类似软件 编辑:程序博客网 时间:2024/06/08 01:54

升级了 HttpClient

前几天看到Apache新发布了 HttpClient 4.3.5,一时手残,将我写的开源项目nForumSDK中的 HttpClient 升级了。

在纯Java的环境下测试了一下,没发现什么问题,新的包还挺好用的,于是就发布了。

过了两天,有人给我发反馈,说在Android应用上测试的时候报错:

java.lang.NoSuchFieldError:org.apache.http.message.BasicLineFormatter.INSTANCE

与Android的兼容性问题

看了一下,报错在这句话上:

httpClient = HttpClients.createDefault();

根据StackOverFlow,问题在于Android集成了低版本的HttpClient,如果在项目中引用高版本的HttpClient就会导致出错。有三种解决办法:

  • Apache专门针对这个问题发布了一个 HttpClient for Android 的版本,如果你使用Maven或者Gradle来管理项目,只需要在依赖中加入:
dependencies{    compile group: 'org.apache.httpcomponents', name:'httpclient-android', version: '4.3.5'}
  • 或下载编译HttpClient for Android 源码, 替换原来的HttpClient即可

  • 或将原来的HttpClient改包名,从’org.apache.http’到’thank.you.google.http’,以避免冲突

本文首发http://www.dss886.com,转载请注明

0 0
原创粉丝点击