web-dev-qa-db-ja.com

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はAndroidに付属するBasicHeaderValueParserを使用しようとしているようで、そのクラスにはまだINSTANCEフィールドがありません。

関連するインポートは次のとおりです。

compile('org.Apache.httpcomponents:httpmime:4.3.6') {
    exclude module: 'httpclient'
}
compile 'org.Apache.httpcomponents:httpcore:4.3.3'
27
joshkendrick

残念ながら、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'
90
ok2c

最新のApache Httpclient Jarファイルと屈折パス名をダウンロードします。それは私のために働く。

2
user4851164

Httpmimeとhttpclient-Androidに互換性のないjarファイルを使用しているようです。 httpmimeのバージョン4.3.6を使用してみてください

1
jazzyjester

Libフォルダーにバージョン4.3.6ファイルのhttpmime_4.3.6.jarを追加して追加するだけです

gradle(アプリレベル)の実装ファイル( 'lib/httpmime-4.3.6.jar')

0
Prakash

簡単な解決策は以下を使用することです:

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

これはAndroidの異なるパッケージ名でラップするためのAppache HttpClientポートです。Androidの既存のバージョンと干渉しないようにします。Androidプロジェクトでjarをインポートします「org.Apache.http」の代わりに「ch.boye.httpclientandroidlib」を使用します。

0
cmg_george