使用Expo 51执行run:android时出现Unsupported class file major version 66错误
解决"Unsupported class file major version 66"错误的方案
错误原因
Unsupported class file major version 66对应JDK 22的类文件版本,你当前使用的JDK 20无法兼容该版本的编译产物,而Expo 51对JDK 20的支持不完善,是导致报错的核心原因。
具体解决步骤
1. 全局降级JDK到17(推荐方案)
Expo官方长期支持JDK 17(LTS版本),兼容性最好:
- 卸载当前JDK 20,安装OpenJDK 17或Oracle JDK 17
- 配置系统环境变量:将
JAVA_HOME指向JDK 17的安装目录,同时将JDK 17的bin路径移到Path环境变量的最前面 - 验证:打开新终端执行
java -version,确认输出显示JDK 17的版本信息
2. 为项目单独指定JDK版本
如果不想修改全局JDK环境,可以在项目内配置Gradle使用JDK 17:
- 在项目根目录创建
gradle.properties文件(若已存在则直接编辑),添加以下内容:
org.gradle.java.home=C:\\Program Files\\Java\\jdk-17.x.x
注意替换为你实际的JDK 17安装路径,路径需使用双反斜杠或正斜杠
3. 清理Gradle缓存
缓存损坏可能引发兼容性问题,执行以下命令清除本地Gradle缓存:
rmdir /s %USERPROFILE%\.gradle\caches
清除完成后重新执行npx expo run:android
4. 调整Gradle版本适配JDK
若上述方法无效,手动调整项目的Gradle版本:
- 打开
android/build.gradle文件,找到dependencies块中的Gradle插件版本,修改为兼容JDK 17的版本,例如:
dependencies { classpath("com.android.tools.build:gradle:7.4.2") // 其他依赖... }
- 打开
android/gradle/wrapper/gradle-wrapper.properties,修改distributionUrl为对应版本的Gradle包:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.4-all.zip
内容的提问来源于stack exchange,提问作者Codeman
相关产品推荐
相关产品推荐

