升级Android Studio 3.1后项目构建失败:Program type already present异常
解决Android Studio 3.1升级后「Program type already present: com.sun.activation.registries.LineTokenizer」构建错误
嘿,这个问题我升级AS 3.1时也踩过坑!这个报错本质是重复依赖冲突——你的项目里有多个第三方库或依赖包都引入了com.sun.activation.registries.LineTokenizer这个类,而AS 3.1默认启用的D8 Dex编译器对重复类的检测比旧版更严格,直接触发了构建失败。
下面是具体的解决步骤:
1. 定位重复依赖的来源
首先得找出到底是哪个依赖引入了重复类。在终端执行Gradle依赖分析命令(把testeapn换成你的模块名):
./gradlew testeapn:dependencies
在输出结果里搜索javax.activation或activation关键词,就能看到哪些库带了这个依赖。
2. 排除重复的依赖项
找到重复依赖后,在对应库的依赖声明里添加exclude规则,去掉重复部分。比如假设是com.xxx.thirdlib:1.0.0引入了重复的activation库,就这么写:
implementation('com.xxx.thirdlib:1.0.0') { exclude group: 'javax.activation', module: 'activation' }
3. 全局排除(找不到具体依赖时用)
如果实在定位不到具体是哪个库导致的,也可以在模块的build.gradle里全局排除这个重复依赖:
configurations { all { exclude group: 'javax.activation', module: 'activation' } }
如果项目确实需要这个依赖,再手动添加一个统一版本的依赖:
implementation 'javax.activation:activation:1.1.1'
4. 清理缓存解决奇怪问题
有时候编译器缓存也会导致这类问题,试试以下操作:
- 点击AS菜单栏的
File > Invalidate Caches / Restart,选择「Invalidate and Restart」重启AS - 手动删除项目根目录的
.gradle文件夹和模块下的build文件夹,再重新执行构建
内容的提问来源于stack exchange,提问作者Joubert Vasconcelos
相关产品推荐
相关产品推荐

