生活を良くします - 怠惰なプログラミング

生活を良くします-怠惰なプログラミング

外資系でエンジニアをやっています。便利なサービスや商品、プログラミングで作ったものなどを紹介していきます

エラー: パッケージorg.apache.http.clientは存在しません への対策

Android Studioでの開発

f:id:what_a_day:20161211212625p:plain

Apache http clientを使いたい

Apache http clientを使用してappを開発していましたが、急にエラーが発生してしまいました。

具体的には

 エラー: パッケージorg.apache.http.impl.cookieは存在しません
 エラー: パッケージorg.apache.http.clientは存在しません
 Error:Execution failed for task ':AppName:compileReleaseJavaWithJavac'.
 > Compilation failed; see the compiler error output for details.

import org.apache.http.client.ClientProtocolException;の部分から失敗してエラーが出てしまいました。

import org.apache.http.client.*;関連で全てエラーが発生するのでなんとか直すことに決めました。

調べたところ、Android 2.3(API レベル 9)以上ではApache http clientが削除されてしまっており、どうやらそのまま使用できないようになっているようです。

修正したコード

build.gradle

/*app直下のbuild.gradle*/
apply plugin: 'com.android.application'

android {
    signingConfigs {
        config {
            keyAlias 'alias'
            keyPassword 'password'
            storeFile file('~~/Directory/keystore/release.jks')
            storePassword 'password'
        }
    }

    compileSdkVersion 24
    buildToolsVersion '24.0.0'
    
    /*useLibrary、のこれを追加する*/
    useLibrary 'org.apache.http.legacy'

/*その他の設定*/

dependencies {
 /*こちらを追加でも可能*/
    compile files('libs/org.apache.http.legacy.jar')
}



解決策:compile filesの追加

自分がやった方法はこれです。libs内にorg.apache.http.legacy.jarを追加してそれをcompileしています。

なぜかlibraryに入っていなかったので.jarファイルを探してlibsに追加しました。

これでも正常に動きます。

解決策:useLibraryの設定

一番無難な方法。

app直下のbuild.gradleを編集して、android内にuseLibraryの行を追加します。

たいていの場合はこれだけで解決します。

解決策の一つはこちらを参考にしました。
developer.android.com

まとめ

解決策のどちらか一つを実行するだけで自分の場合はエラーが消えました。

どちらとも試して見て気に入った方やうまくいった方を選択してみるのが良いかと思います。