仅安装JDK 20却报Class文件版本错误(无法识别55.0以上版本)
核心原因
你不需要单独安装JRE,JDK 20已经包含完整的JRE环境。错误的本质是你运行的程序(比如Android SDK的sdkmanager)没有使用你全局配置的JDK 20,而是调用了系统中其他低版本的Java环境——虽然你全局java版本是20,但sdkmanager可能有自己的Java路径配置,或者系统Path里的低版本Java被优先调用了。
具体解决步骤
检查并调整系统Path顺序
打开cmd执行where java,如果输出多个Java路径,把JDK 20的bin目录(比如C:\Program Files\Java\jdk-20.0.2\bin)移到系统Path环境变量的最顶端,确保它被优先调用。强制指定Flutter/Android SDK使用的Java版本
- 为Flutter单独设置Java环境变量:新增系统环境变量
FLUTTER_JAVA_HOME,值设为你的JDK 20安装目录,这个变量的优先级高于全局JAVA_HOME,Flutter会优先使用它。 - 如果使用Android Studio,打开
File > Project Structure > SDK Location,在JDK Location处选择你的JDK 20目录,保存后重启IDE。
- 为Flutter单独设置Java环境变量:新增系统环境变量
排查sdkmanager的本地配置
进入C:\Users\yvviv\AppData\Local\Android\Sdk\cmdline-tools\latest\bin目录,打开sdkmanager.bat文件,检查里面有没有硬编码的Java路径(比如set JAVA_HOME=xxx),如果有,修改为你的JDK 20路径,或者直接删除该行让它使用全局配置。Minecraft版本适配
部分Minecraft版本对Java版本有严格限制(比如旧版只支持Java 8/11),如果是这种情况,建议安装对应版本的JDK,通过切换环境变量或者启动器的Java路径设置来指定对应版本运行。
验证操作
修改完成后,重启cmd,执行java -version确认版本是20.0.2,再运行flutter doctor --android-licenses测试是否正常。
内容的提问来源于stack exchange,提问作者Vivek Y V

