获取NoSuchFieldError INSTANCE org / apache / http / message / BasicHeaderValueParser

问题描述 投票:27回答:5

我正在研究Android上的应用。我正在使用httpcore 4.3.3。当我尝试使用ContentType.parse(string)时,我得到了这个

java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/message/BasicHeaderValueParser; in class Lorg/apache/http/message/BasicHeaderValueParser; or its superclasses (declaration of 'org.apache.http.message.BasicHeaderValueParser' appears in /system/framework/ext.jar)

我做了一些谷歌搜索,我理解为什么我得到错误,但我不确定如何解决它。从我读过的内容来看,似乎ContentType试图利用Android附带的BasicHeaderValueParser,而该类还没有INSTANCE字段。有什么帮助吗?

这些是相关的进口:

compile('org.apache.httpcomponents:httpmime:4.3.6') {
    exclude module: 'httpclient'
}
compile 'org.apache.httpcomponents:httpcore:4.3.3'
android apache-httpclient-4.x androidhttpclient
5个回答
89
投票

不幸的是,HttpCore的库存版本无法在Android中使用。请使用Apache HttpClient Android Port,其中还包括必需的HttpCore类

compile('org.apache.httpcomponents:httpmime:4.3.6') {
    exclude module: 'httpclient'
}
compile 'org.apache.httpcomponents:httpclient-android:4.3.5'

2
投票

下载最新的Apache Httpclient Jar文件并折射路径名称。这对我行得通。


1
投票

看起来你使用不兼容的jar为httpmime和httpclient-android。尝试使用httpmime的4.3.6版


0
投票

简单的解决方案是使用:

https://code.google.com/p/httpclientandroidlib/

它是用于Android包装的Appache HttpClient端口,使用不同的包名称,因此不会干扰Android中的现有版本。在Android项目中导入jar而不是“org.apache.http”使用“ch.boye.httpclientandroidlib”。


0
投票

只需在lib文件夹中添加版本4.3.6文件的httpmime_4.3.6.jar并添加即可

gradle(app level)中的实现文件('lib / httpmime-4.3.6.jar')

© www.soinside.com 2019 - 2024. All rights reserved.