Android Studio 3.0.1报错Could not find or load main class Desugar求解决
我之前维护旧项目时也碰到过这个一模一样的Desugar类加载问题,在Android Studio 3.0.1版本里,这个错误大多和依赖重复、缓存冲突或者Java 8配置不当有关,给你整理几个亲测有效的解决步骤:
1. 排查并排除重复的Desugar依赖
这个错误最常见的原因是项目中引入了多个版本的Desugar相关库,导致类路径冲突。你可以通过以下步骤定位:
- 在终端执行项目根目录下的命令:
./gradlew app:dependencies - 查看输出的依赖树,找到所有包含
com.android.tools.build:desugar的依赖项,确认是否有重复引入的情况。 - 如果发现重复,在对应的依赖声明中添加排除规则,比如:
implementation('你的依赖名称') { exclude group: 'com.android.tools.build', module: 'desugar' }
2. 彻底清理项目缓存并重建
Android Studio的缓存有时候会导致各种奇奇怪怪的问题,试试以下操作:
- 点击顶部菜单栏的
Build -> Clean Project,等待清理完成。 - 接着点击
Build -> Rebuild Project,重新构建整个项目。 - 手动删除项目根目录下的
.gradle文件夹和app模块下的build文件夹,然后重启Android Studio。
3. 确认Gradle插件和JDK版本匹配
Android Studio 3.0.1需要对应版本的Gradle插件和JDK 8支持:
- 打开项目根目录的
build.gradle文件,确保classpath中的Gradle插件版本是3.0.1:buildscript { dependencies { classpath 'com.android.tools.build:gradle:3.0.1' } } - 打开
File -> Project Structure,在SDK Location中确认JDK路径指向的是Java 8(3.0.1插件对高版本JDK兼容不佳,别用Java 9及以上版本)。
4. 检查Java 8编译配置是否正确
Desugar是用来处理Java 8特性的,确保你的app/build.gradle中正确开启了Java 8支持:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
另外,注意报错信息中提到的临时文件路径H:\AndroidStudio\PerfectPhotoEditor2018\app\build\intermediates\tmp\desugar_args...,确保你的项目路径没有特殊字符,且Android Studio有该路径的读写权限。
5. 手动指定Desugar依赖版本
如果以上方法都没用,可以尝试手动指定Desugar的版本,覆盖内置的冲突版本:
dependencies { implementation 'com.android.tools.build:desugar:1.0.5' // 该版本适配Gradle插件3.0.1 }
完整报错信息:
Error Error:Could not find or load main class com.google.devtools.build.android.desugar.Desugar
Error:Execution failed for task ':app:transformClassesWithDesugarForDebug'.com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: Error while executing java process with main class com.google.devtools.build.android.desugar.Desugar with arguments {@H:\AndroidStudio\PerfectPhotoEditor2018\app\build\intermediates\tmp\desugar_args3374109584933962673}
内容的提问来源于stack exchange,提问作者Jaydip Kalkani

