Android Studio 3.1运行报错:Program type already present异常求助
解决「Program type already present: org.apache.http.ConnectionClosedException」异常
这个错误本质是重复依赖了包含org.apache.http.ConnectionClosedException类的库,结合你的项目配置(compileSdk 27),可以按以下步骤排查解决:
1. 先排查重复依赖来源
打开Android Studio的Terminal,执行依赖分析命令,找出重复引入的库:
- Mac/Linux用户运行:
./gradlew app:dependencies - Windows用户运行:
gradlew.bat app:dependencies
在输出结果里搜索org.apache.http相关条目,看是否有多个模块同时引入了包含该类的库(比如org.apache.httpcomponents:httpclient,或是某些第三方SDK自带了apache http相关类)。
2. 排除重复的依赖
如果发现某个第三方依赖自带了冲突的apache http库,在对应的依赖声明里添加排除规则。比如假设com.example:third-party-sdk:1.0是冲突来源,就修改build.gradle:
implementation('com.example:third-party-sdk:1.0') { exclude group: 'org.apache.httpcomponents', module: 'httpclient' }
3. 适配Android 23+的Apache Http配置
从Android 6.0(API 23)开始,系统移除了对Apache Http客户端的内置支持,如果你确实需要使用相关功能,可以在build.gradle的android块里添加:
android { useLibrary 'org.apache.http.legacy' }
这一步是引入系统提供的遗留apache http库,避免自己引入的库和系统残留类冲突。
4. 清理项目缓存
缓存也可能导致奇怪的重复类问题,执行以下操作:
- 点击顶部菜单栏
Build→Clean Project - 接着点击
Build→Rebuild Project - 也可以手动删除项目根目录的
.gradle文件夹和app模块下的build文件夹,再重新同步项目。
额外提示
因为你开启了multiDexEnabled true,确保你的Application类正确继承MultiDexApplication,或者在attachBaseContext方法里调用MultiDex.install(this),避免多dex场景下的类加载冲突。
内容的提问来源于stack exchange,提问作者dj_4war
相关产品推荐
相关产品推荐

