解决Flutter的Android许可证错误(UnsupportedClassVersionError)
问题描述
在使用Flutter开发过程中执行flutter doctor --android-licenses
时,出现以下错误提示:
java.lang.UnsupportedClassVersionError:
com/android/sdklib/tool/sdkmanager/SdkManagerCli has been compiled
by a more recent version of the Java Runtime (class file version 61.0),
this version of the Java Runtime only recognizes class file versions up to 55.0
这个错误表明:
- 您当前的Java版本太低(低于17)
- Android SDK管理工具需要使用Java 17+运行
- 即使安装了新版本Java,环境变量可能未正确配置
解决方案
方法一:使用兼容的Android SDK命令行工具(推荐)
兼容性
此方法适合Java版本无法升级的情况
安装旧版命令行工具
- 打开Android Studio → SDK Manager → SDK Tools
- 取消勾选"Android SDK Command-line Tools (latest)"
- 勾选"Android SDK Command-line Tools 8.0"
bash# Linux系统打开SDK Manager的命令 flutter config --android-studio-dir=/path/to/android-studio flutter doctor --android-licenses
重命名工具文件夹
bash# 进入Android SDK目录 cd ~/Android/Sdk/cmdline-tools # 重命名文件夹(需确保8.0存在) mv 8.0 latest.bak # 备份原最新版 mv 8.0 latest # 将8.0设为新latest
重新检查许可证
bashflutter doctor --android-licenses
方法二:升级Java版本并配置环境变量
注意
确保完全卸载旧版Java避免冲突
安装OpenJDK 17
bashsudo apt update sudo apt install openjdk-17-jdk
设置环境变量
bash# 打开配置文件 nano ~/.bashrc # 或 ~/.zshrc # 添加环境配置 export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export PATH=$JAVA_HOME/bin:$PATH # 使配置生效 source ~/.bashrc
验证Java版本
bashjava -version # 应显示类似:openjdk version "17.0.8" 2023-07-18
重新接受许可证
bashflutter doctor --android-licenses
方法三:完全重装Java环境
当上述方法无效时执行:
卸载所有Java版本
bashsudo apt purge openjdk-* sudo apt autoremove
重新安装最新JDK
bashsudo apt install openjdk-17-jdk
确认版本路径
bashsudo update-alternatives --config java
附加建议
重要
安装完成后务必验证环境变量
永久设置JAVA_HOME:
bash
echo "export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))" | tee -a ~/.profile
source ~/.profile
多版本Java管理工具:
bash
# 安装管理工具
sudo apt install jenv
# 添加Java路径
jenv add /usr/lib/jvm/java-17-openjdk-amd64
检查Flutter环境:
bash
# 完整验证环境
flutter doctor -v
# 常见修复提示:
# 如果提示缺失命令工具
sdkmanager "cmdline-tools;latest"
总结
解决方案 | 适用场景 | 优势 |
---|---|---|
降级命令行工具 | 无法升级Java环境 | 无需系统级变更 |
升级Java并设环境变量 | 需长期使用高版本Java | 一劳永逸 |
完全重装Java | 环境混乱或存在多个Java版本 | 彻底解决依赖冲突 |
多数情况下,安装Android SDK Command-line Tools 8.0并配置为最新版(方案一)能快速解决问题。若仍需最新SDK功能,建议采用方案二安装Java 17+并配置环境变量。