Получение NoSuchFieldError INSTANCE org/apache/http/message/BasicHeaderValueParser
Я работаю над приложением на 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 пытается использовать BasicHeaderValueParser, который поставляется с Android, и этот класс еще не имеет поля INSTANCE. Любая помощь пожалуйста?
Это соответствующий импорт:
compile('org.apache.httpcomponents:httpmime:4.3.6') {
exclude module: 'httpclient'
}
compile 'org.apache.httpcomponents:httpcore:4.3.3'
Ответы
Ответ 1
К сожалению, версии 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
Загрузите последний файл Jar Apache Httpclient Jar и преломите его. Это работает для меня.
Ответ 3
Похоже, вы используете несовместимую банку для httpmime и httpclient-android. Попробуйте использовать версию 4.3.6 httpmime
Ответ 4
Простым решением является использование:
https://code.google.com/p/httpclientandroidlib/
Это порт HttpClient Appache для андроидного переноса в другом имени пакета, чтобы он не мешал существующей версии Android.
Импортируйте банку в проект Android, а вместо "org.apache.http" используйте "ch.boye.httpclientandroidlib".
Ответ 5
Просто добавьте httpmime_4.3.6.jar файла версии 4.3.6 в папку lib и добавьте файлы реализации ('lib/httpmime-4.3.6.jar') в gradle (уровень приложения)