You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle构建时org.apache.http库出现重复类错误,寻求解决办法

Android Gradle构建时org.apache.http类重复定义问题解决

我在使用Gradle构建Android项目时,遇到org.apache.http相关类的重复定义错误,项目构建失败,但当前依赖组合能满足我对HttpMultipartMode、MultipartEntityBuilder、ContentType、HttpPost、HttpRequestBase、HttpUriRequest这些类的访问需求,需要解决构建问题。

部分错误信息如下:

Duplicate class org.apache.http.HttpHeaders found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.TruncatedChunkException found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.annotation.GuardedBy found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.annotation.Immutable found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.annotation.NotThreadSafe found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.annotation.ThreadSafe found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.auth.ContextAwareAuthScheme found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.client.AuthCache found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.client.RedirectStrategy found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.client.entity.DecompressingEntity found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.client.entity.DeflateDecompressingEntity found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.client.entity.GzipDecompressingEntity found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.client.protocol.RequestAcceptEncoding found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.client.protocol.RequestAuthCache found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.client.protocol.RequestClientConnControl found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.client.protocol.ResponseContentEncoding found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.client.utils.Idn found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.client.utils.JdkIdn found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.client.utils.Punycode found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.client.utils.Rfc3492Idn found in modules jetified-httpclient-android-4.3.5.1.jar (org.apache.httpcomponents:httpclient-android:4.3.5.1) and jetified-org.jbundle.util.osgi.wrapped.org.apache.http.client-4.1.2.jar (org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2)
Duplicate class org.apache.http.conn.HttpRoutedConnection found in modules jetified-httpclient-android-4.3.5.1.jar 

我的Gradle配置如下:

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.2"
    useLibrary 'org.apache.http.legacy'

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    dexOptions {
        javaMaxHeapSize "4g"
    }

    ...
    defaultConfig {
        applicationId "com.myapp.android"
        //Oreo 8.0
        minSdkVersion 26
        // Android 11
        targetSdkVersion 30
    }
    
    ...
}

dependencies {
    ...
    implementation ('org.apache.httpcomponents:httpclient-android:4.3.5.1') {
        exclude group: 'org.apache.http'
    }
    implementation('org.apache.httpcomponents:httpmime:4.3') {
        exclude group: 'org.apache.httpcomponents', module: 'httpclient'
        ...
    }
   
    implementation'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
}

解决方案

方案1:排除重复依赖

错误根源是httpclient-android和org.jbundle.util.osgi.wrapped.org.apache.http.client两个依赖包含重复的org.apache.http类。修改org.jbundle.util.osgi.wrapped.org.apache.http.client的依赖配置,排除冲突的包:

implementation('org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2') {
    exclude group: 'org.apache.http', module: 'httpclient'
    exclude group: 'org.apache.http', module: 'httpcore'
}

方案2:移除冗余依赖

检查项目是否真的需要org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2。如果核心需求已由httpclient-android和httpmime满足,直接移除该旧版本依赖:

// 移除该行
// implementation'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'

方案3:强制统一依赖版本

如果必须保留两个依赖,在android块中添加冲突解决规则,强制使用httpclient-android的版本:

android {
    ...
    configurations.all {
        resolutionStrategy {
            force 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
        }
    }
}

验证修改

执行./gradlew app:dependencies(替换app为你的模块名),查看依赖树,确认重复的org.apache.http包已被排除或统一版本。

内容的提问来源于stack exchange,提问作者PewK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:10:37