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

升级了 HttpClient


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


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


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

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

与Android的兼容性问题


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

1
httpClient = HttpClients.createDefault();

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


Apache专门针对这个问题发布了一个 HttpClient for Android 的版本,如果你使用Maven或者Gradle来管理项目,只需要在依赖中加入:

1
2
3
dependencies{
     compile group:  'org.apache.httpcomponents' , name: 'httpclient-android' , version:  '4.3.5'
}

或下载编译 HttpClient for Android 源码 , 替换原来的HttpClient即可

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

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


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值