Flutter项目中出现:Could not initialize class org.codehaus.groovy.runtime.InvokerHelper的解决方法

在尝试使用旧版Flutter(1.20.3)构建项目并运行时遇到错误。作者发现错误并非由于gradle和java版本不兼容,而是在gradle.properties文件中添加特定的java路径(org.gradle.java.home)作为解决方案。通过在该文件中指定JDK11.0.11的路径,成功解决了问题。

我的环境如下:

  • gradle 版本:

      gradle -v  //java的版本也直接输出来了。

Gradle 5.6.2
------------------------------------------------------------

Build time:   2019-09-05 16:13:54 UTC
Revision:     55a5e53d855db8fc7b0e494412fc624051a8e781

Kotlin:       1.3.41
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.14 compiled on March 12 2019
JVM:          11.0.11 (Oracle Corporation 11.0.11+9-LTS-194)
OS:           Windows 10 10.0 amd64

C:\Users\nothing>java -version
java version "11.0.11" 2021-04-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.11+9-LTS-194)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.11+9-LTS-194, mixed mode)
  • Flutte版本

flutter doctor -v //里面的红×可以无视,因为我不使用android studio开发,因为太卡了。

C:\Users\Nothing>flutter doctor -v
[√] Flutter (Channel stable, 1.20.3, on Microsoft Windows [Version 10.0.19045.3086], locale zh-CN)
    • Flutter version 1.20.3 at E:\flutter_windows_1.20.3-stable\flutter
    • Framework revision 216dee60c0 (2 years, 9 months ago), 2020-09-01 12:24:47 -0700
    • Engine revision d1bc06f032
    • Dart version 2.9.2
    • Pub download mirror https://pub.flutter-io.cn
    • Flutter download mirror https://storage.flutter-io.cn


[√] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at C:\Users\Liu Shaoting\AppData\Local\Android\Sdk
    • Platform android-34, build-tools 34.0.0
    • Java binary at: E:\AndroidStudio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-b2043.56-9586694)
    • All Android licenses accepted.

[!] Android Studio
    • Android Studio at E:\AndroidStudio
    X Flutter plugin not installed; this adds Flutter specific functionality.
    X Dart plugin not installed; this adds Dart specific functionality.
    • android-studio-dir = E:\AndroidStudio
    • Java version OpenJDK Runtime Environment (build 17.0.6+0-b2043.56-9586694)

[√] Connected device (1 available)
    • Amazon Fire Phone (mobile) • emulator-5554 • android-x64 • Android 9 (API 28)

! Doctor found issues in 1 category.

Flutter项目构建及运行过程不再赘述。由于我需要重现别人的issue,所以就需要使用这些很老的版本。Flutter 1.22.0以上的版本直接创建项目,然后运行项目就可以了。但是在Flutter 1.22.0版本以后就需要做一下配置操作(这个不太确定,根据我的经验是这样的。)。OK, 当我在Flutter1.20.3创建的项目中使用flutter run如运行时,意外发生了,这个意外如下:

 这个错误我找了stackflow上的解决方法,大家都说是gradle版本和java的版本不匹配导致的。但是我从java8换到了java17,从gradle2.14换到gradle7.5.1。依然没有解决我的问题。gradle和java版本对照表可以查看here。然后自己摸索,试了各种方法,最后得到了答案。

解决方法如下(对我有效):

 1. 在你的项目中,找到android文件夹下的gradle.properties文件,打开这个文件。内容如下,里面的内容都是在项目构建过程中自动生成的。

org.gradle.jvmargs=-Xmx1536M

android.enableR8=true

android.useAndroidX=true

android.enableJetifier=true

 2. 在这个gradle.properties文件中增加你的java路径。格式是org.gradle.java.home=C:\\Program Files\\Java\\jdk-11.0.11。于是,gradle.properties文件的内容变为。

org.gradle.jvmargs=-Xmx1536M

android.enableR8=true

android.useAndroidX=true

android.enableJetifier=true

org.gradle.java.home=C:\\Program Files\\Java\\jdk-11.0.11

3. 保存文件。最后flutter  run就OK了。

注: 这种方法对本人有效,可以一起交流。

<think>嗯,用户遇到了Flutter项目在删除C盘文件后出现构建错误,提示“Could not initialize class org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSetKt”。这个问题看起来和Kotlin Gradle插件版本不兼容有关。让我先理清可能的原因和解决办法。 首先,根据引用[3],Kotlin Gradle插件版本和编译器版本不一致会导致类似错误。比如,如果插件是1.9.10,但编译器是1.9.20,就会出现问题。用户可能在删除C盘文件后,导致某些缓存或配置文件丢失,使得Gradle重新下载依赖时版本不匹配。 其次,引用[4]提到,项目中的Kotlin版本和本地环境不一致也会引发这个错误。用户需要检查Flutter项目中的Kotlin版本,确保与Android Studio插件中的版本一致。可能需要手动修改build.gradle文件中的kotlin-gradle-plugin版本。 另外,引用[5]指出,如果Gradle无法找到指定版本的Kotlin插件,也会报错。用户可能需要更新或调整build.gradle中的依赖版本,确保它们存在且兼容。 接下来,解决方案的步骤可能包括: 1. 清理Gradle缓存,因为删除C盘文件可能导致残留的旧版本文件。使用`gradlew clean`或手动删除缓存目录。 2. 检查并统一Kotlin版本。查看Android Studio的Kotlin插件版本,然后在项目的build.gradle中调整`kotlin-gradle-plugin`到相同版本。 3. 更新Gradle插件版本,确保与Kotlin版本兼容。例如,引用[3]建议使用特定版本的ktfmt插件或升级Kotlin插件到1.9.20。 4. 检查Flutter环境,运行`flutter doctor`确认环境正常,可能需要重新配置或修复Flutter工具链。 用户可能还需要注意Gradle的依赖冲突,比如第三方插件引用了不兼容的Kotlin版本。需要统一所有模块的Kotlin版本,或者在build.gradle中强制指定版本。 最后,如果问题依旧,可能需要重新克隆项目或重新安装依赖,确保所有文件完整。总之,核心在于版本一致性和环境完整性,通过逐步排查和调整依赖版本应该能解决问题。</think>### 问题分析 Flutter项目构建时出现`Could not initialize class org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSetKt`错误,通常由以下原因导致: 1. **Kotlin Gradle插件版本不兼容**:删除C盘文件可能导致本地Gradle缓存损坏或依赖版本冲突[^3][^4]。 2. **项目配置与本地环境不一致**:Kotlin插件版本在项目配置文件和本地Gradle缓存中不一致[^5]。 3. **依赖未正确同步**:删除文件后,Gradle未重新下载或部分依赖缺失[^5]。 --- ### 解决方案 #### 1. 清理Gradle缓存 删除C盘文件可能导致残留的旧版本依赖,需手动清理缓存: - **命令行清理**: ```bash cd <项目路径> ./gradlew clean ``` - **手动删除缓存目录**: - Windows: `C:\Users\<用户名>\.gradle\caches` - macOS/Linux: `~/.gradle/caches` #### 2. 统一Kotlin版本 检查项目中Kotlin插件版本是否与本地环境一致: 1. **查看Android Studio的Kotlin插件版本**: - 打开Android Studio → File → Settings → Plugins → 搜索`Kotlin` → 查看版本号(如`1.9.20`)。 2. **修改项目中的Kotlin版本**: - 打开项目根目录的`build.gradle`,调整依赖版本: ```groovy buildscript { ext.kotlin_version = '1.9.20' // 与插件版本一致 dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } ``` #### 3. 更新Gradle插件 确保Gradle插件与Kotlin版本兼容: - 修改项目根目录的`build.gradle`: ```groovy dependencies { classpath 'com.android.tools.build:gradle:7.4.2' // 推荐稳定版本 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.20" // 与本地一致 } ``` #### 4. 检查Flutter环境 运行以下命令修复Flutter环境: ```bash flutter clean flutter pub get flutter doctor ``` #### 5. 强制同步依赖 在`gradle.properties`中添加以下配置,避免依赖冲突: ```properties android.useAndroidX=true android.enableJetifier=true ``` --- ### 示例配置 ```groovy // 项目根目录 build.gradle buildscript { ext.kotlin_version = '1.9.20' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } ``` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值