Minecraft Fabric模组开发时遇到报错-Failed download after 3 attempts
遇到的主要报错如下(当然以下只是一部分报错)
A problem occurred configuring root project 'tuuorial_mod'.
Failed to notify project evaluation listener.
Failed to setup Minecraft, java.io.UncheckedIOException: Failed download after 3 attempts
Failed download after 3 attempts
- Try:
Run with --info or --debug option to get more log output.
Run with --scan to get full insights.
Get more help at https://help.gradle.org.
- Exception is:
org.gradle.api.ProjectConfigurationException: A problem occurred configuring root project 'tuuorial_mod'.
at org.gradle.configuration.project.LifecycleProjectEvaluator.wrapException(LifecycleProjectEvaluator.java:84)
at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:77)
at org.gradle.configuration.project.LifecycleProjectEvaluator.access$500(LifecycleProjectEvaluator.java:55)
at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:255)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.lambda$run$0(LifecycleProjectEvaluator.java:114)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$1(DefaultProjectStateRegistry.java:406)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$fromMutableState$2(DefaultProjectStateRegistry.java:429)
at org.gradle.internal.work.DefaultWorkerLeaseService.withReplacedLocks(DefaultWorkerLeaseService.java:360)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:429)
at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState(DefaultProjectStateRegistry.java:405)
at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:100)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:72)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:790)
at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:156)
解决办法
先声明一点以下办法都没有解决我的报错,我的报错是自己莫名奇妙自己好的
遇到以上报错,你可以尝试做一下以上检查
- 检查你的互联网连接:确保你有稳定的互联网连接,并且你可以从你的网络浏览器访问
https://piston-meta.mojang.com/mc/game/version_manifest_v2.json。 - 检查 SSL 证书:如果你使用的是自定义的 Java 安装,确保它有正确的 SSL 证书。你可能需要将服务器的 SSL 证书导入到你的 Java 的密钥库中。
- 清除 Gradle 缓存:你可以尝试删除你的 Gradle 缓存中的损坏文件。文件应该位于你的主目录的 .gradle/caches/fabric-loom/version_manifest.json。删除文件后,尝试再次运行构建。
当然,就我实际的经验来说,上面的办法都没有什么用
我先阐述一下我遇到这个报错的情况,我上午正在学习如何开发Fabric模组,当时Gradle都是可以正常构建,也是可以正常启动minecraft的,但是就中午吃完饭回来,就遇到这个构建的问题。总结来说,就是莫名其妙地遇到这个问题。上面三个方面是我和AI经过一些对别人遇到类似情况的讨论后总结出来的。
然后先说第一点
Caused by: net.fabricmc.loom.util.download.DownloadException: Failed to download file from (https://piston-meta.mojang.com/mc/game/version_manifest_v2.json) to (C:\Users\Administrator\.gradle\caches\fabric-loom\version_manifest.json)
这个是我看到报错中导致的原因,然后我先去检查我的网络是否有问题,但是这个文件我点击进去是可以看到json文件的(https://piston-meta.mojang.com/mc/game/version_manifest_v2.json,你遇到类似的问题,不一定是这个问题),我认为我的网络没有问题
至于第二个方法,看到要如何验证,我都不想去去验证,我贴一下方法
检查 SSL 证书通常涉及到以下几个步骤:
检查证书链:你可以使用 openssl 命令行工具来检查服务器的 SSL 证书链。在命令提示符或者终端中,输入以下命令:
echo | openssl s_client -servername hostname -connect host:port 2>/dev/null | openssl x509 -noout -issuer -subject
将 hostname 替换为你要连接的服务器的主机名,将 host:port 替换为你要连接的服务器的主机和端口。例如,如果你要连接 https://piston-meta.mojang.com/mc/game/version_manifest_v2.json,那么 hostname 就是 piston-meta.mojang.com,host:port 就是 piston-meta.mojang.com:443。
这个命令会输出服务器的 SSL 证书的颁发者和主题。你可以检查颁发者是否是一个可信的证书颁发机构。
检查 Java 的密钥库:Java 有一个内置的密钥库,存储了所有可信的证书颁发机构的证书。你可以使用 keytool 命令行工具来检查 Java 的密钥库。在命令提示符或者终端中,输入以下命令:
keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts
将 $JAVA_HOME 替换为你的 Java 安装目录。这个命令会列出 Java 密钥库中的所有证书。你可以检查是否包含服务器的 SSL 证书的颁发者的证书。
如果你发现服务器的 SSL 证书的颁发者的证书不在 Java 的密钥库中,你可能需要将它导入到密钥库中。你可以使用 keytool 的 -importcert 命令来导入证书。
第三个方法version_manifest.json这个文件应该是某种原因在构建的时候,并没有下载在本地,看报错中的信息应该是某种网络问题(同时我觉得大概率就是因为这个文件下载不下来,才导致这个报错),所以第三种方法验证没法验证,陷入了僵局。当然我查看了网上与我遇到相似情况的人,不过中间有些情况我确定并不我遇上的所以并没验证,但是我还是把链接贴出来,如果真的遇到类似的问题,可以看一下是否有可能是其他原因。
https://github.com/orgs/FabricMC/discussions/2571
https://github.com/FabricMC/fabric-loom/issues/913
然后我也是在当时陷入僵局之后反复看这几个讨论,当时我觉得最可能和我相同情况大概是这几位
但是我总不可能什么都做,等着这个错误自己好,所以接下里我把讨论区得方法都试了一下,都没用。然后尝试清除IDEA缓存,重启IDEA,重启电脑,重新解压项目,最后都以失败告终,我只能自暴自弃,放弃了,结果今天早上起来就莫名其妙好了。
所以其实我事后来看这个报错,应该是网络问题,但是我也不清楚这个网络问题是如何发生的,我只能描述一下,我最开始是用家里路由器联网正常开发,到公司连的是热点,上午也是正常开发,但是到下午就遇到报错,今天上午又连了家里的路由器,又正常了,到现在用自己的热点也是正常启动。
然后我贴一个开发者在讨论区的回复,可能正规一点的回答
以上大概就是我可以给你遇到这个错误提供的所有帮助了,如果你对这个错误有更加深入的了解,可以在评论区回答。