React Native CLI编译Kotlin失败,JDK兼容及环境问题求助
问题
之前用Expo CLI开发一切正常,切换到React Native CLI后出现编译错误,错误日志如下:
info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag. Jetifier found 936 file(s) to forward-jetify. Using 12 workers... info JS server already running. info Installing the app... > Task :react-native-gradle-plugin:compileKotlin FAILED 'compileJava' task (current target is 1.8) and 'compileKotlin' task (current target is 11) jvm target compatibility should be set to the same Java version. 1 actionable task: 1 executed FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':react-native-gradle-plugin:compileKotlin'. > Failed to query the value of task ':react-native-gradle-plugin:compileKotlin' property 'compilerRunner$kotlin_gradle_plugin'. > Kotlin could not find the required JDK tools in the Java installation. Make sure Kotlin compilation is running on a JDK, not JRE. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 4s error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup. Error: Command failed: gradlew.bat app:installDebug -PreactNativeDevServerPort=8081 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':react-native-gradle-plugin:compileKotlin'. > Failed to query the value of task ':react-native-gradle-plugin:compileKotlin' property 'compilerRunner$kotlin_gradle_plugin'. > Kotlin could not find the required JDK tools in the Java installation. Make sure Kotlin compilation is running on a JDK, not JRE. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 4s at makeError (C:\Users\dhanp\React native projects\test3\ProjectName\node_modules\execa\index.js:174:9) at C:\Users\dhanp\React native projects\test3\ProjectName\node_modules\execa\index.js:278:16 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async runOnAllDevices (C:\Users\dhanp\React native projects\test3\ProjectName\node_modules\@react-native-community\cli-platform-android\build\commands\runAndroid\runOnAllDevices.js:109:5) at async Command.handleAction (C:\Users\dhanp\React native projects\test3\ProjectName\node_modules\@react-native-community\cli\build\index.js:192:9) info Run CLI with --verbose flag for more details
运行gradlew clean时也触发相同错误:
> Task :react-native-gradle-plugin:compileKotlin FAILED 'compileJava' task (current target is 1.8) and 'compileKotlin' task (current target is 11) jvm target compatibility should be set to the same Java version. FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':react-native-gradle-plugin:compileKotlin'. > Failed to query the value of task ':react-native-gradle-plugin:compileKotlin' property 'compilerRunner$kotlin_gradle_plugin'. > Kotlin could not find the required JDK tools in the Java installation. Make sure Kotlin compilation is running on a JDK, not JRE. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 4s 1 actionable task: 1 executed
当前项目配置:
- 根目录build.gradle:
dependencies { classpath("com.android.tools.build:gradle:7.2.1") classpath("com.facebook.react:react-native-gradle-plugin") classpath("de.undercouch:gradle-download-task:4.1.2") // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }
- gradle-wrapper.properties:
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
已尝试的操作:
- 修改classpath和gradle distribution URL
- 在build.gradle中添加Java 11兼容配置,但问题未解决:
android { compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = JavaVersion.VERSION_11.toString() } }
解决方案
1. 安装并确认使用JDK 11
- 打开命令行,执行
java -version和javac -version。如果javac提示不存在,说明当前环境用的是JRE,必须换成JDK 11。 - 下载JDK 11并安装,安装路径避免中文或特殊字符。
2. 配置环境变量指向JDK 11
- 设置
JAVA_HOME为JDK 11的安装根目录(例如C:\Program Files\Java\jdk-11.0.19)。 - 将
%JAVA_HOME%\bin移到系统PATH变量的最顶端,确保系统优先调用JDK 11的工具。 - 重启命令行,再次执行
java -version和javac -version,确认两者都显示JDK 11版本。
3. 统一项目全局Java版本配置
修改根目录build.gradle,在buildscript块中添加全局编译配置,确保Java和Kotlin版本一致:
buildscript { ext { buildToolsVersion = "33.0.0" minSdkVersion = 21 compileSdkVersion = 33 targetSdkVersion = 33 kotlinVersion = "1.7.20" // 版本需与React Native兼容,可根据RN版本调整 } repositories { google() mavenCentral() } dependencies { classpath("com.android.tools.build:gradle:7.2.1") classpath("com.facebook.react:react-native-gradle-plugin") classpath("de.undercouch:gradle-download-task:4.1.2") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${ext.kotlinVersion}") } // 全局配置Java和Kotlin编译版本 tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions.jvmTarget = JavaVersion.VERSION_11.toString() } tasks.withType(JavaCompile).configureEach { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } }
同时修改app/build.gradle,保持模块级配置一致:
android { compileSdkVersion rootProject.ext.compileSdkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = JavaVersion.VERSION_11.toString() } }
4. 清理缓存后重新构建
- 执行
gradlew clean清除旧编译缓存。 - 执行
npx react-native run-android重新启动项目。
内容的提问来源于stack exchange,提问作者Dhanush Raja
相关产品推荐
相关产品推荐

