搭建Minecraft 1.8.9 Forge模组开发环境遇Gradle方法签名报错
Forge MDK 1.8.9 执行SetupDecompWorkspace任务报方法签名错误
报错信息
> No signature of method: org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.whenReady() is applicable for argument types: (SetupUtpTestResultListenerAction) values: [SetupUtpTestResultListenerAction@(实例ID)] Possible solutions: whenReady(groovy.lang.Closure)
当前环境配置
- 操作系统:Windows 10
- 开发IDE:IntelliJ IDEA Community 2022.1.3
- 开发套件:Forge MDK 1.8.9 推荐版本
复现流程
- 参考Youtube公开Minecraft模组开发教程,完成Forge MDK下载等前置操作,进度对应教程8分02秒节点
- 在IntelliJ IDEA中选择项目文件夹内的
build.gradle文件,将其作为项目打开 - 点击右侧侧边栏三点图标旁的Gradle图标,展开Gradle相关文件列表
- 展开forgegradle目录,双击执行
SetupDecompWorkspace任务,执行完成后弹出上述错误
问题原因
这个报错是版本不兼容导致的:Forge MDK 1.8.9配套的ForgeGradle是多年前的旧版本,仅适配Gradle 2.x~3.x系列,只认whenReady(groovy.lang.Closure)格式的方法调用。而IDEA 2022.1内置的UTP(统一测试平台)组件会注入新版的SetupUtpTestResultListenerAction参数调用该方法,老版本Gradle没有匹配的方法签名,直接抛出错误。
解决步骤
- 校验Gradle版本
打开项目根目录下gradle/wrapper/gradle-wrapper.properties文件,确认distributionUrl配置指向gradle-2.14.1-bin.zip,这是Forge 1.8.9官方适配的Gradle版本,禁止使用Gradle 4及以上版本。 - 调整IDEA Gradle配置
打开IDEA设置,进入Build, Execution, Deployment > Build Tools > Gradle页面:- 将
Gradle JVM选择为JDK 8,高版本JDK无法正常编译1.8.9版本的Forge - 找到测试相关配置项,取消勾选
Use UTP for test results/Enable unified test platform listener选项,从根源关闭注入报错监听器的逻辑
- 将
- 清理缓存重新执行任务
关闭IDEA,删除项目根目录下的.gradle、build两个缓存文件夹,重新打开项目等待基础同步完成。不要直接在右侧Gradle面板点击任务,打开IDEA底部的Terminal终端,依次执行以下命令:
所有命令执行成功后,环境配置就完成了,可以正常启动调试客户端。gradlew clean gradlew setupDecompWorkspace gradlew genIntellijRuns
补充说明:如果按上述步骤操作后仍然报错,直接更换为2020.3及更早版本的IntelliJ IDEA即可,这类旧版本没有内置UTP组件,和老版ForgeGradle不存在兼容性冲突,不需要额外调整配置就能跑通流程。
内容的提问来源于stack exchange,提问作者Mattes
相关产品推荐
相关产品推荐

