运行Flutter App遇:fluttertoast:compileDebugJavaWithJavac执行失败求助
错误详情
Execution failed for task ':fluttertoast:compileDebugJavaWithJavac'.
Could not resolve all files for configuration ':fluttertoast: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: D:\softwares\SDK\platforms\android-33\core-for-system-modules.jar.
Error while executing process C:\Program Files\Android\Android Studio\jbr\bin\jlink.exe with arguments {--module-path C:\Users<my_user_name>.gradle\caches\8.10\transforms\4d29fbaa4346204be836c2ef53b3528e-d08e292b-46c8-4b2e-a9a3-70c9d6beb0d2\transformed\output\temp\jmod --add-modules java.base --output C:\Users<my_user_name>.gradle\caches\8.10\transforms\4d29fbaa4346204be836c2ef53b3528e-d08e292b-46c8-4b2e-a9a3-70c9d6beb0d2\transformed\output\jdkImage --disable-plugin system-modules}
项目配置信息
pubspec.yaml依赖配置
environment: sdk: ">=3.1.0 <4.0.0" dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.5 http: ^0.13.4 sqflite: ^2.0.0+3 shared_preferences: 2.2.2 image_picker: 1.0.5 flutter_swiper_null_safety: 1.0.2 flutter_rating_bar: 4.0.1 flutter_html: ^3.0.0-alpha.3 carousel_slider: ^4.0.0 url_launcher: ^6.0.20 cached_network_image: ^3.2.0 flutter_mobx: ^2.0.5 numeric_keyboard: ^1.0.0 flutter_secure_storage: 9.0.0 dio: ^4.0.4 flutter_math_fork: ^0.7.1 flutter_svg: 2.0.0+1 intl: 0.18.1 razorpay_flutter: 1.3.7 loading_indicator: ^3.1.1 dev_dependencies: flutter_lints: ^2.0.0 flutter: uses-material-design: true
Android项目build.gradle配置
def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { localPropertiesFile.withReader('UTF-8') { reader -> localProperties.load(reader) } } def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") } def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' } def flutterVersionName = localProperties.getProperty('flutter.versionName') if (flutterVersionName == null) { flutterVersionName = '1.0' } apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { namespace "com.rohitkolar.townie_things" compileSdkVersion 34 ndkVersion '28.0.12674087 rc2' compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = '17' } sourceSets { main.java.srcDirs += 'src/main/kotlin' } defaultConfig { applicationId "com.rohitkolar.townie_things" minSdkVersion 19 targetSdkVersion 34 versionCode flutterVersionCode.toInteger() versionName flutterVersionName multiDexEnabled true } buildTypes { release { signingConfig signingConfigs.debug } } } flutter { source '../..' } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21" implementation 'com.android.support:multidex:1.0.3' }
已排查情况
- razorpay_flutter:1.3.7会自动依赖fluttertoast,降级razorpay版本会触发未指定namespace错误
- Gradle插件版本高于8时出现当前错误,降级Gradle插件无法满足Play Store对SDK版本≥34的要求
- 已执行
flutter clean、flutter pub cache clean,问题未解决
解决方案尝试
1. 强制指定兼容的fluttertoast版本
在pubspec.yaml中添加fluttertoast的明确依赖,覆盖razorpay默认引入的版本,选择兼容Gradle 8+和Java 17的版本:
dependencies: # 其他依赖不变 razorpay_flutter: 1.3.7 fluttertoast: ^8.2.4 # 强制指定版本
添加后执行flutter pub get,再重新编译。
2. 修复JDK与SDK模块的兼容性
- 检查Android Studio的JBR版本:确保使用Java 17(与项目compileOptions配置一致),可通过
File > Project Structure > SDK Location查看JDK位置并确认版本 - 重新下载Android 33 SDK平台:打开Android Studio的SDK Manager,卸载后重新安装Android 33,确保core-for-system-modules.jar文件完整无损坏
- 尝试改用Android 34的core模块:在local.properties中添加
android.sdk.platform=34,强制使用Android 34的系统模块
3. 调整Gradle配置参数
在项目根目录的gradle.properties文件中添加以下参数,解决JDK模块访问限制问题:
org.gradle.jvmargs=-Xmx2048m --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED
4. 彻底清理缓存
- 删除项目根目录下的
.gradle文件夹 - 删除用户目录下的
.gradle/caches文件夹(如C:\Users\<my_user_name>\.gradle\caches) - 执行
flutter pub get和flutter run重新构建项目
5. 匹配Gradle插件与SDK版本
确保项目根目录build.gradle中的Gradle插件版本与compileSdkVersion 34兼容,推荐使用8.1.0及以上版本:
buildscript { repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:8.1.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0" } }
内容的提问来源于stack exchange,提问作者Rohit Kolar

