无法编译任何Flutter项目:‘gradle:compileGroovy’错误
Flutter编译报错:Could not find or load main class GradleWorkerMain
错误信息
编译任意Flutter项目(包括刚创建的新项目)都会弹出以下错误:
Error: Could not find or load main class worker.org.gradle.process.internal.worker.GradleWorkerMain Caused by: java.lang.ClassNotFoundException: worker.org.gradle.process.internal.worker.GradleWorkerMain Could not write standard input to Gradle Worker Daemon 1.
- 触发失败的任务:
:gradle:compileGroovy - 系统附加提示:
Gradle Worker Daemon启动失败,进程'Gradle Worker Daemon 1'以非零退出值1结束
当前环境配置
- JDK 20
- Gradle 8.1
- Flutter 3.19
- 已尝试无效方案:删除本地
.gradle目录、重装Gradle、重装JDK
可行解决方案
1. 降级JDK到17
Gradle 8.1虽官方宣称支持JDK 20,但实际场景中存在Worker Daemon的兼容性bug,降级到长期支持的JDK 17基本能解决问题:
- 卸载当前JDK 20,安装JDK 17(OpenJDK或Oracle JDK都可以)
- 把系统环境变量
JAVA_HOME指向JDK 17的安装路径,确保PATH里JDK 17的优先级最高 - 重启终端或IDE,重新执行
flutter run
2. 给项目单独指定JDK版本
不想全局修改JDK的话,可在Flutter项目里配置Gradle单独用JDK 17:
- 打开项目根目录下的
android/gradle.properties文件,添加一行配置:
org.gradle.java.home=/你的JDK17安装路径
- 把
/你的JDK17安装路径替换成实际的路径,比如Windows下C:\Program Files\Java\jdk-17.0.9,Mac下/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
3. 临时禁用Gradle Worker Daemon
紧急调试时可以直接禁用Worker Daemon绕过问题:
- 编译时加参数执行:
flutter run --no-daemon
- 或者在
android/gradle.properties里添加配置永久禁用(不推荐长期用,会降低编译速度):
org.gradle.daemon=false
4. 调整Gradle的JVM内存参数
部分情况是Worker Daemon启动时内存不足导致类加载失败,可增大JVM参数:
- 在
android/gradle.properties里添加:
org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=512m
内容的提问来源于stack exchange,提问作者Ashtar Ammar
相关产品推荐
相关产品推荐

