Android Studio构建失败:java.lang.ClassNotFoundException问题求助
java.lang.ClassNotFoundException 问题 嘿,我之前也帮不少开发者排查过这类Gradle同步故障,针对你遇到的java.lang.ClassNotFoundException: org.gradle.api.internal.AsmBackedClassGenerator$MixInExtensibleDynamicObject错误,咱们先拆解原因,再一步步解决:
核心故障原因
这个错误本质是Android Gradle Plugin(AGP)和Gradle版本不兼容导致的——org.gradle.api.internal.AsmBackedClassGenerator$MixInExtensibleDynamicObject是Gradle内部用于动态类生成的ASM相关类,不同版本的AGP对Gradle的内部类结构有严格依赖,版本不匹配就会出现找不到类的情况。另外,本地Gradle缓存损坏、项目依赖冲突也可能触发这个问题。
具体解决方案
1. 严格对齐AGP与Gradle版本
这是最常见的触发点,你得确保两者版本完全对应(2018年的版本对应关系参考如下):
- AGP 3.0.x → Gradle 4.1
- AGP 3.1.x → Gradle 4.4
- AGP 3.2.x → Gradle 4.6
- AGP 3.3.x → Gradle 4.10.1
操作步骤:
- 打开项目根目录的Project级
build.gradle,找到com.android.tools.build:gradle的版本,比如:buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.1.2' } } - 接着修改
gradle/wrapper/gradle-wrapper.properties里的distributionUrl,替换成对应版本的Gradle包地址,比如对应AGP 3.1.2的话:distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
2. 彻底清理Gradle缓存
缓存损坏是容易被忽略的点,试试手动清理:
- 先关闭Android Studio
- 删除本地Gradle缓存目录:
- Windows:
C:\Users\<你的用户名>\.gradle\caches - Mac:
~/.gradle/caches
- Windows:
- 重启AS后,点击
File → Sync Project with Gradle Files重新同步
3. 排查第三方依赖的ASM冲突
有些第三方依赖会自带ASM库,和Gradle内部的ASM版本冲突也会引发这个错误:
- 打开AS的Terminal,执行命令查看依赖树:
- Mac/Linux:
./gradlew app:dependencies - Windows:
gradlew app:dependencies
- Mac/Linux:
- 找有没有
org.ow2.asm:asm这类ASM相关依赖,如果发现版本和Gradle不兼容,就在依赖里排除它:implementation('你的第三方依赖') { exclude group: 'org.ow2.asm' }
4. 检查gradle.properties的异常配置
如果你的gradle.properties里设置了奇怪的JVM参数,也可能干扰类加载。可以先备份当前配置,然后恢复成默认的gradle.properties,再尝试同步。
兜底排查方案
如果以上方法都没用,建议创建一个全新的空白Android项目,看看能不能正常同步。如果新项目没问题,说明是你当前项目的配置或依赖有问题,可以逐步把旧项目的配置、依赖迁移到新项目里,慢慢定位故障点。
你提供的部分日志:
2018-03-29 10:35:17,903 [ thread 30] INFO - .proj...
内容的提问来源于stack exchange,提问作者Anastasia

