惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
DataBreaches.Net
GbyAI
GbyAI
Microsoft Security Blog
Microsoft Security Blog
博客园_首页
大猫的无限游戏
大猫的无限游戏
Jina AI
Jina AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
IT之家
IT之家
MongoDB | Blog
MongoDB | Blog
The GitHub Blog
The GitHub Blog
月光博客
月光博客
U
Unit 42
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗
腾讯CDC
B
Blog RSS Feed
博客园 - Franky
爱范儿
爱范儿

晓雨杂记

为 PCL CE 添加 Sentry 集成 为 PCL CE 添加 Sentry 集成 【转载】舞萌 DX 报错 8103 / 8106 以及 0949 问题原因分析和解决方案 【转载】舞萌 DX 报错 8103 / 8106 以及 0949 问题原因分析和解决方案 【转载】舞萌国服 1.53 补丁更新内容速览 【转载】舞萌国服 1.53 补丁更新内容速览 站点之间,是生活的片段 站点之间,是生活的片段 EdgeOne 免费版,Yes! EdgeOne 免费版,Yes! 2025 年,把一加 6T 作为主力机是什么体验?(上) 2025 年,把一加 6T 作为主力机是什么体验?(上) 2024 年终总结 2024 年终总结 国行 iPhone 12 强开 Apple 智能 国行 iPhone 12 强开 Apple 智能 通过自定义主题重写我的博客 通过自定义主题重写我的博客 窗边浅谈:形同陌路的“朋友” 窗边浅谈:形同陌路的“朋友” 没有衡水命,一身衡水病——盲目复制衡水模式的意义何在? 没有衡水命,一身衡水病——盲目复制衡水模式的意义何在? 在 Valaxy 中使用 Artalk 作为评论系统 在 Valaxy 中使用 Artalk 作为评论系统 窗边浅谈:序章 窗边浅谈:序章 【转载】关于 HiPer 的安全性讨论,以及对于近期一些小事的简单介绍 【转载】关于 HiPer 的安全性讨论,以及对于近期一些小事的简单介绍 2023 年终回顾 2023 年终回顾
如何诊断 Minecraft Java 版客户端中的错误
Big_Cake · 2022-04-08 · via 晓雨杂记

前言 ​

妈耶,终于修好 Hexo 报 YAMLException 的问题了,上次更新已经是 5 个月前了呢!

这段时间没更新,主要就是 Hexo 的锅。

顺带一提,又回归到网课时期了(我这边有疫情)

由于 Mojang Bugjump 的传统艺能,Minecraft Java 版通常会因为各种玄幻的原因崩溃,这篇文章将会带着你判断你的 Minecraft 出了什么问题,以及可能的修复方法。

步骤 ​

选择正确的 Java 版本 ​

请先选择正确的 Java 版本。

1.17.x 需要 Java 16,1.18 + 需要 Java 17。1.16.5 及以下需要 Java 8

如果选择了错误的 Java,那么不管怎么搞,游戏都始终会崩溃。

通常情况下,启动器会自动根据选择的版本帮你选择 Java 运行时(如 BakaXL 和 PCL2)

当你的游戏无法启动时,取决于你使用的启动器(如 BakaXL ),启动器会为你分析崩溃原因并为你提供一个打包好的错误报告与日志。如果你比较懒,可以直接将这个压缩包发到 QQ 群等处询问他人。(但这就和这篇文章的主旨脱离了啊喂)

推荐阅读:提问的智慧

理想情况下,上面的方法可帮你解决大部分问题。但是俗话说:“理想很丰满,现实很骨感”,有些问题连启动器都没办法告诉你为啥。这就需要我们自己动手了。

认识 Minecraft 的目录结构 ​

首先,请打开你存放游戏的文件夹。我在这里默认你的游戏已经运行和崩溃了至少一次。

如果你没有开启版本隔离,那么这个文件夹应该至少具备以下目录结构:

文件夹
|_ .minecraft
|     |_ assets
|     |_ libraries
|     |_ crash-reports
|     |_ logs
|     |_ versions
|     |   |_ 你的游戏版本
|     |       |_ 游戏版本.jar
|     |       |_ 游戏版本.json
|     |_ launcher_profiles.json       
|_ 启动器( PCL2.exe,BakaXL.exe 等)

如果你开启了版本隔离,那么这个文件夹的目录结构至少应该是这样的:

文件夹
|_ .minecraft
|     |_ assets
|     |_ libraries
|     |_ versions
|     |   |_ 你的游戏版本
|     |       |_ crash-reports
|     |       |_ logs
|     |       |_ 游戏版本.jar
|     |       |_ 游戏版本.json
|     |_ launcher_profiles.json
|_ 启动器( PCL2.exe,BakaXL.exe 等)

然后,按照上方的目录结构,找到 crash-reportslogs 文件夹。前者存放着游戏崩溃时自动生成的崩溃报告,后者存放游戏运行日志

然后,在资源管理器中按下 “修改日期” 按钮,你就会看到最新的日志 latest.log

latest-log

crash-reports 文件夹同理。

我们暂且先不去理 latest.log 。现在让我们打开最新的 crash-report 文件,打开以后你就会看到大片的堆栈跟踪以及看不懂的错误类型。

文件名内标有 server 字样的一般和游戏内置的服务端有关,你可以不用理会。一般崩溃后产生的 crash-report 文件都是带有 client 字样的

crash-report

寻找错误 ​

这一份崩溃报告是安装了 Forge 和 VanillaFix 后的一次崩溃生成的。我们可以看到这里的错误类型是 Initializing game ,意思是加载游戏(废话)。堆栈跟踪最顶部的一行告诉了我们错误原因是 ngtlib 这个依赖 Mod 加载 jp.ngt.ngtlib.NGTCore 这个 Class 失败了。

屏幕截图 2022-04-08 125741.png

这段文字告诉我们导致错误的原因是 ClassNotFoundException 即 “找不到类”。下方的 Sha1 值验证不通过和后方跟着的人类可读报错告诉我们这个 Mod 和依赖它的 RealTrainMod 的版本不对应导致崩溃

往下翻,我们可以看到这样的布局:

屏幕截图 2022-04-08 130559.png

上半部分记录了你的系统、游戏版本、Java 和 JVM 各自的版本、JVM 参数、内存等;下半部分则是你使用的 Forge、OptiFine(如果你装了)的版本以及下方 L、C、H、I、J、A、D、E 八个字符分别对应的意思以及你安装的 Mods。一般通过这张表即可得出出问题的 Mod 是哪个。

以此类推即可。

如果你的 Minecraft 文件夹内出现了文件名类似 hs-err-pidxxxxxxxx.mdmp 之类的文件的话,可能是你分配给 Minecraft 的内存过少或者你的 Java 有问题。

如果启动时出现了一个窗口,内部带有如下链接:https://aka.ms/mcdriver ,则说明你的显卡驱动出现了一些问题(或者你压根没有显卡——通常发生在你尝试在租来的 Windows 服务器上)。

解决问题 ​

出问题的 Mod,需要更换或删除。

内存不足,需要多分点内存,或者滚回功率,坐和放宽去玩老版本

显卡有问题,可以考虑更新显卡驱动或者重买一个电脑(?

Java / JVM 的问题,可以尝试重新安装一次 Java 或者多给你的 Minecraft 分配点内存。毕竟:

Java eats memories