我正在研究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'
不幸的是,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'
下载最新的Apache Httpclient Jar文件并折射路径名称。这对我行得通。
看起来你使用不兼容的jar为httpmime和httpclient-android。尝试使用httpmime的4.3.6版
简单的解决方案是使用:
https://code.google.com/p/httpclientandroidlib/
它是用于Android包装的Appache HttpClient端口,使用不同的包名称,因此不会干扰Android中的现有版本。在Android项目中导入jar而不是“org.apache.http”使用“ch.boye.httpclientandroidlib”。
只需在lib文件夹中添加版本4.3.6文件的httpmime_4.3.6.jar并添加即可
gradle(app level)中的实现文件('lib / httpmime-4.3.6.jar')