Android项目构建报错:Unsupported class file major version 62
问题分析与解决:Unsupported class file major version 62(关联SimpleDateFormat)
错误本质
Unsupported class file major version 62意味着项目中存在用Java 18编译的class文件,但当前Android构建环境(核心是Android Gradle插件,AGP)不支持解析这个版本的字节码。Java版本与major version对应关系:62=Java18,61=Java17,55=Java11,以此类推。
常见根源
1. JDK版本切换
近期你可能更换了本地JDK版本到18,或者构建环境(比如CI/CD、Android Studio自动更新)默认启用了Java18。而AGP对高版本JDK的支持有明确限制:
- AGP 7.0~7.4:仅支持Java 11及以下
- AGP 8.0+:支持Java 17及以下(官方暂未正式支持Java18)
2. 依赖库版本更新
你近期升级的某个依赖库(恰好包含SimpleDateFormat相关逻辑)可能改用Java18编译发布,导致项目引入了不兼容的class文件。
3. 编译配置误修改
项目的sourceCompatibility、targetCompatibility被误设置为JavaVersion.VERSION_18,或者compileSdkVersion与JDK版本不匹配,触发了高版本字节码编译。
解决步骤
1. 回退JDK版本
- 打开Android Studio,通过
File > Project Structure > SDK Location > JDK Location选择兼容的JDK(推荐用Studio自带的JDK,比如AGP8.x对应自带的Java17,AGP7.x对应Java11) - 如果是命令行构建,确保
JAVA_HOME指向符合要求的JDK版本
2. 排查并调整依赖
- 查看近期修改的依赖项,回退到之前能正常运行的版本
- 执行
./gradlew dependencies生成依赖树,定位可能引入高版本class的依赖(结合构建日志里的SimpleDateFormat关联信息缩小范围)
3. 修正编译配置
打开Module级别的build.gradle文件,确保编译配置与AGP版本匹配:
android { compileSdk 34 // 对应AGP8.x,若用AGP7.x可设为33 defaultConfig { // 其他配置... } compileOptions { // AGP7.x用VERSION_11,AGP8.x用VERSION_17 sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } // 若项目用Kotlin,需同步设置jvmTarget kotlinOptions { jvmTarget = "17" } }
4. 清理构建缓存
执行命令彻底清理缓存,避免残留的高版本字节码:
./gradlew clean build --refresh-dependencies
内容的提问来源于stack exchange,提问作者Josef M
相关产品推荐
相关产品推荐

