flutter Execution failed for task :gradle:compileGroovy‘

Execution failed for task ':gradle:compileGroovy'.
> BUG! exception in phase 'semantic analysis' in source unit '/Users/caiyajie/FlutterConnect/flutter/packages/flutter_tools/gradle/src/main/groovy/app_plugin_loader.groovy' Unsupported class file major version 65


问题:android studio更新版本后在andorid手机调试出现。

原因:更新后Android Studio 内置的 java 版本已更新,项目的Gradle与Gradle插件版本并未与java版本匹配;

解决:使用Android studio打开flutter项目内android文件,会自动更新Gradle与AGP(无需其他操作,更新失败需要反复刷新或者重新打开android文件)。


(以下图仅供参考:)

解决后gradle版本8.9;插件8.7.2

解惑:android studio更新后使用flutter doctor -v查看java版本为21,Gradle与Gradle插件版本是flutter sdk自带的,所以升级编译器后,对应关系可能出错。

参考链接:
gradle和JAVA/Kotlin的版本对应关系_gradle版本对应关系-CSDN博客
Android Gradle 插件 8.7 版本说明  |  Android Studio  |  Android Developers

Android问题记录 - 适配Android Studio Ladybug/Java 21/AGP 8.0(持续更新)-CSDN博客

<think>好的,用户遇到了Gradle编译时的错误:“Unsupported class file major version 65”。我需要先理解这个错误的原因。通常,Java的类文件版本号对应着特定的JDK版本,比如major version 65对应的是Java 21。所以,这个错误可能是因为项目使用的JDK版本高于Gradle或Groovy插件所支持的版本。 接下来,我需要考虑解决这个问题的步骤。首先,用户应该检查他们的Java版本。可能他们安装了Java 21,但Gradle或Groovy插件还不支持这个版本。这时候,用户需要确认Gradle和Groovy插件的兼容性。 然后,解决方案可能包括几个方面:降级JDK版本到兼容的,比如JDK 17或11;升级Gradle到最新版本,因为新版本可能支持更高的Java版本;调整Groovy插件的版本,确保与当前使用的JDK匹配。此外,配置Gradle的编译任务,明确指定Java版本,也是一个关键步骤。 还需要提醒用户检查构建脚本中的sourceCompatibility和targetCompatibility设置,确保它们与使用的JDK一致。另外,IDE中的JDK设置也是一个容易忽略的地方,比如IntelliJ或Eclipse可能使用不同的JDK,需要统一配置。 可能还需要考虑Gradle的守护进程问题,有时候旧的守护进程可能缓存了旧的JDK信息,导致错误,所以建议清理并重启Gradle守护进程。 最后,根据用户提供的引用内容,虽然引用[1]提到的是避免重复打包boot jar的问题,可能与当前错误无关,但引用[2]提到UnrealBuildTool的错误格式,这可能与构建工具的输出处理有关,但不确定是否相关,可能暂时不需要考虑这部分。 总结解决方案步骤,逐步指导用户检查JDK版本,调整相关配置,升级工具版本,并确保环境一致性。同时,生成相关问题帮助用户进一步排查可能的其他问题,比如依赖冲突或构建缓存问题。</think>### Gradle编译错误"Unsupported class file major version 65"解决方案 #### 错误原因分析 该错误表明Gradle使用的JDK版本与Groovy编译任务要求的Java版本不兼容。Java类文件major version 65对应JDK 21[^1],当出现此错误时,通常存在以下情况: 1. 使用JDK 21编译代码,但Gradle/Groovy插件版本不支持该JDK 2. 项目中混合使用不同版本的JDK 3. 构建缓存中残留旧版本编译结果 #### 分步解决方案 **第一步:检查Java版本** ```bash java -version # 输出示例:openjdk version "21.0.1" 2023-10-17 ``` 若显示JDK 17+,请继续执行后续步骤 **第二步:配置Gradle构建脚本** 在`build.gradle`中添加Java版本约束: ```groovy compileGroovy { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } tasks.withType(GroovyCompile) { options.fork = true options.forkOptions.jvmArgs += ['-Dgroovy.target.bytecode=17'] } ``` **第三步:升级依赖版本** ```groovy plugins { id 'groovy' // 确保使用最新版本(截至2024年1月) id 'org.springframework.boot' version '3.1.5' apply false } dependencies { implementation 'org.codehaus.groovy:groovy-all:3.0.18' // 支持JDK 21的最低版本 } ``` **第四步:设置Gradle JDK** 1. 在`gradle.properties`中添加: ``` org.gradle.java.home=/path/to/jdk17 ``` 2. 验证Gradle使用的JDK: ```bash ./gradlew --version ``` #### 常见辅助检查项 1. 检查IDE设置的JDK版本(IntelliJ: File > Project Structure > SDKs) 2. 清理构建缓存: ```bash ./gradlew clean --refresh-dependencies ``` 3. 验证Gradle wrapper配置(gradle/wrapper/gradle-wrapper.properties) ```properties distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip ``` #### 引用说明 关于构建工具版本兼容性问题,Gradle官方文档特别指出:"构建工具版本必须与JDK保持兼容"。当遇到类文件版本错误时,优先考虑工具链配置的同步更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值