苹果M1运行React Native安卓项目报Could not open dsl generic class cache错误
错误根因
报错中Unsupported class file major version 61是Gradle版本和Java版本不兼容导致的:major version 61对应Java 17,而你当前项目使用的Gradle 6.8最高仅支持到Java 15,无法识别Java 17编译的类文件。
修复方案(两种二选一即可,优先推荐方案一,兼容性更强)
方案一:降级Java版本到11(React Native官方推荐适配版本)
- 卸载本地当前安装的Java 17,安装Java 11版本
- 配置Java环境变量,mac系统可在
~/.zshrc或~/.bash_profile中添加如下配置:export JAVA_HOME=$(/usr/libexec/java_home -v 11) - 执行
source ~/.zshrc(或对应你使用的shell配置文件)让配置生效,运行java -version确认输出为11.x版本即配置成功 - 清理缓存避免旧数据影响:
- 执行
rm -rf ~/.gradle/caches/清空全局Gradle缓存 - 进入项目android目录,执行
./gradlew clean清理项目构建缓存 - 回到项目根目录,删除node_modules文件夹和package-lock.json(或yarn.lock)文件,重新执行
npm install安装依赖
- 执行
- 执行
npx react-native run-android重新运行项目即可
方案二:升级Gradle版本适配Java 17
如果不想降级Java,可以升级项目Gradle版本到支持Java 17的7.3及以上版本:
- 打开项目
android/gradle/wrapper/gradle-wrapper.properties文件,修改distributionUrl参数:distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip - 打开项目
android/build.gradle文件,修改Android构建插件版本和Gradle适配:dependencies { classpath "com.android.tools.build:gradle:7.0.4" // 其余原有配置保持不变 } - 执行方案一中的缓存清理步骤,再重新运行项目即可
内容的提问来源于stack exchange,提问作者Wai Yan Hein
相关产品推荐
相关产品推荐

