You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已配置JDK17但Gradle仍编译旧Java版本,RN项目报错

React Native Reanimated编译报错修复方案

问题描述

系统环境:Ubuntu,React Native 0.72.5,OpenJDK 17.0.13
项目此前运行正常,打包APK后无法在设备/模拟器启动,编译报错如下:

> Task :react-native-reanimated:compileDebugJavaWithJavac FAILED

  Note: Recompile with -Xlint:deprecation for details.
/home/trsuser/Desktop/Projects/Trois/HRMS-MOBILE/Hrms-app/node_modules/react-native-reanimated/android/src/main/java/com/swmansion/reanimated/layoutReanimation/AnimationsManager.java:356: error: pattern matching in instanceof is not supported in -source 11
      if (props.get(Snapshot.TRANSFORM_MATRIX) instanceof ReadableNativeArray matrixArray) {
                                                                              ^
  (use -source 16 or higher to enable pattern matching in instanceof)
/home/trsuser/Desktop/Projects/Trois/HRMS-MOBILE/Hrms-app/node_modules/react-native-reanimated/android/src/main/java/com/swmansion/reanimated/NodesManager.java:440: error: switch rules are not supported in -source 11
      case "opacity" -> {
                     ^
  (use -source 14 or higher to enable switch rules)
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':react-native-reanimated:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

问题根源:React Native Reanimated v3.5.4依赖Java 16+特性,但Gradle编译第三方模块时仍以Java 11为目标版本。用户已在app/build.gradle中配置Java 17编译选项,但未覆盖第三方模块的编译规则。

用户当前app/build.gradle关键配置片段:

android {
    // ...其他配置
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    kotlin {
        jvmToolchain(17)
    }
    // ...其他配置
}

修复步骤

1. 配置项目根目录build.gradle,统一所有模块Java版本

打开项目根目录下的build.gradle(非app子目录下的文件),添加subprojects块,强制所有模块(包括第三方依赖)使用Java 17编译:

subprojects {
    afterEvaluate { project ->
        if (project.hasProperty('android')) {
            project.android {
                compileOptions {
                    sourceCompatibility JavaVersion.VERSION_17
                    targetCompatibility JavaVersion.VERSION_17
                }
                kotlin {
                    jvmToolchain(17)
                }
            }
        }
    }
}

2. 配置gradle.properties指定Gradle运行环境

在项目根目录的gradle.properties文件中添加以下参数,确保Gradle使用Java 17执行:

org.gradle.java.home=/usr/lib/jvm/java-17-openjdk-amd64
org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M"
android.useAndroidX=true
android.enableJetifier=true

注意:org.gradle.java.home的路径需匹配你Ubuntu系统中OpenJDK 17的实际安装路径,可通过update-alternatives --list java命令查看。

3. 清理缓存并重新构建

执行以下命令清理编译缓存,重新构建项目:

cd android
./gradlew clean
cd ..
npx react-native run-android

备选方案(若上述步骤无效)

删除本地依赖缓存后重新安装:

rm -rf node_modules package-lock.json
npm install

内容的提问来源于stack exchange,提问作者LoneWolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 11:50:11