Flutter集成Kotlin原生代码时遇JDK构建错误求助
解决Flutter集成原生代码时的Java构建错误
错误信息
FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:compileDevDebugJavaWithJavac'. > Could not resolve all files for configuration ':app:androidJdkImage'. > Failed to transform core-for-system-modules.jar to match attributes {artifactType=_internal_android_jdk_image, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}. > Execution failed for JdkImageTransform: C:\Users\yasmitha_local\AppData\Local\Android\Sdk\platforms\android-33\core-for-system-modules.jar. > jlink executable C:\Program Files\Java\jdk1.8.0_301\bin\jlink.exe does not exist.
问题原因
你的Android配置中指定了使用Java 11编译,但当前系统用的是JDK 1.8版本。jlink是Java 9及以上才有的工具,JDK 1.8里没有这个文件,导致构建时无法完成JDK镜像转换任务。
相关配置代码
app/build.gradle配置
android { compileSdkVersion 33 ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } }
项目根目录build.gradle配置
buildscript { ext.kotlin_version = '1.6.10' repositories { google() mavenCentral() } dependencies { classpath 'com.google.gms:google-services:4.3.13' classpath 'com.android.tools.build:gradle:7.1.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
AndroidManifest.xml片段
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.epic.digiface"> <application tools:replace="android:label" android:name="${applicationName}" android:label="digiface" android:icon="@mipmap/ic_launcher"> <activity android:name=".MainActivity" android:exported="false" android:launchMode="singleTop" android:theme="@style/LaunchTheme"
解决方案
- 升级JDK到11或更高版本:
- 下载安装JDK 11(OpenJDK或Oracle JDK均可)
- 配置系统环境变量
JAVA_HOME指向JDK 11的安装路径 - 在Android Studio中通过
File > Project Structure > SDK Location,将JDK Location设置为JDK 11的路径
- 调整编译选项匹配当前JDK:
如果暂时无法升级JDK,可把compileOptions里的版本改为Java 8:
注意:此操作可能导致部分依赖不兼容,需验证项目其他组件是否支持Java 8compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } - 验证Gradle插件兼容性:
当前使用的Android Gradle插件7.1.1与JDK 11兼容,无需调整插件版本,确保JDK版本匹配即可
内容的提问来源于stack exchange,提问作者Yasmitha Peththanayake
相关产品推荐
相关产品推荐

