57

我已将 Android Studio 更新到版本 3,现在似乎无法编译我之前编译的项目而没有错误。

错误信息如下

Error:Error: commons-logging 定义的类与 Android 现在提供的类冲突。解决方案包括查找没有相同问题的较新版本或替代库(例如,对于 httpclient,请改用 HttpUrlConnection 或 okhttp),或使用 jarjar 之类的东西重新打包库。[重复平台类]

依赖项是

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:27.0.0'
    compile 'com.android.support:design:27.0.0'
    compile 'com.google.api-client:google-api-client-android:1.23.0' exclude module: 'httpclient'
    compile 'com.google.http-client:google-http-client-gson:1.23.0' exclude module: 'httpclient'
    compile 'com.google.firebase:firebase-core:11.4.2'
}

并且错误似乎是由

compile 'com.google.api-client:google-api-client-android:1.23.0' exclude module: 'httpclient'
compile 'com.google.http-client:google-http-client-gson:1.23.0' exclude module: 'httpclient'

我已经使用exclude module: 'httpclient' 了为什么它不编译?这是 Android Studio 3 的错误和\或包含的com.android.tools.build:gradle:3.0.0插件还是我遗漏了什么?与以前的版本编译完全一样的项目没问题。

4

11 回答 11

69

添加到build.gradle位于应用程序模块中

configurations {
    all {
        exclude module: 'httpclient'
    }
}
于 2017-10-29T00:32:50.237 回答
45

如果问题出在公共日志记录上,那么它也必须被排除。在 app/build.gradle 中添加以下代码

configurations {
    all {
        exclude module: 'httpclient'
        exclude module: 'commons-logging'
    }
}
于 2017-11-09T06:18:53.293 回答
11

遇到了同样的问题。我做了以下更改

 configurations {
    all{
        exclude group: 'commons-logging', module: 'commons-logging'
        exclude group: 'org.apache.httpcomponents'
    }
}


packagingOptions {
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/NOTICE'
    exclude 'org/apache/http/version.properties'
    exclude 'org/apache/http/client/version.properties'
}
于 2018-01-23T07:15:33.413 回答
8

在终端中运行,在项目文件夹中:

./gradlew app:dependencies > dependencies.txt

然后检查 dependencies.txt 以找出谁在使用冲突的依赖项并采取相应的行动(检查更新,删除它,或者按照@Silverstorm 的建议使用排除)

于 2017-12-15T09:10:23.480 回答
8

您应该将“compile”替换为“implementation”,因为它在最新的 gradle 中已被弃用,并从 Google api 客户端库中排除“org.apache.httpcomponents”:

implementation('com.google.api-client:google-api-client-android:1.23.0') {
    exclude group: 'org.apache.httpcomponents'
}
implementation('com.google.http-client:google-http-client-gson:1.23.0') {
    exclude group: 'org.apache.httpcomponents'
}

这个解决方案在这里找到: https ://developers.google.com/google-apps/activity/v1/quickstart/android

于 2017-11-09T08:34:12.387 回答
2

如果您想继续,请async-http仅在以下代码中添加以下代码app/build.gradle

configurations {
    all {
        exclude module: 'commons-logging'
    }
}
于 2018-01-31T09:47:18.167 回答
1

由于 'org.apache.httpcomponents:httpclient:4.3.3' 在 SDKversion 23 之后被弃用,所以

替换这个:

compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'

compile 'org.apache.httpcomponents:httpclient:4.3.3'
于 2018-04-08T20:05:48.100 回答
0

我按照上面的建议删除了 commons-logging,当然它在某些带有Fatal Exception: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/logging/LogFactory;. 当 Android API 不包含任何这些类时,Android 如何声称 commons-logging 与 Android API 冲突?!?https://developer.android.com/reference/packages没有 org.apache.commons.logging :facepalm:

我已经添加回implementation 'commons-logging:commons-logging:1.0.4'build.gradle - Android Studio 用红色强调它,但 gradle 编译愉快。:facepalm:

安卓:triple_facepalm:

于 2019-04-30T19:24:48.113 回答
0

org.apache.httpcomponents:httpmime如果您因为依赖而面临此问题,请在您的应用程序级别 build.gradle 文件中使用它:

implementation('org.apache.httpcomponents:httpmime:4.5.12') {
    exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}
implementation "org.apache.httpcomponents:httpcore:4.4.13"
于 2021-10-22T05:44:12.813 回答
-1

添加这个然后同步你的gradle

configurations {
    all*.exclude group: 'com.google.guava', module: 'listenablefuture'
    all*.exclude module: 'httpclient'
    all*.exclude module: 'commons-logging'
}
于 2021-03-22T14:18:26.020 回答
-1

就我而言,android studio 无法识别“httpclient”,所以我无法使用@Silverstorm 答案。

而是找到了另一个答案: 错误:json定义了与Android现在提供的类冲突的类

这意味着在 app build.gradle 中添加以下内容:

configurations {
    all {
        exclude group: 'org.json', module: 'json'
    }
}
于 2021-10-21T02:49:54.477 回答