点了启动,终端停在红字上,你完全看不懂。这时候最有效的一步不是重装,而是让应用自己体检:它会检查运行环境、Java、容器、命令、字体、存储、端口,并标出哪几项「可以通过一键安全修复处理」。
另一半是崩溃报告:服务端意外退出后,应用把退出码、关键异常、日志尾部打包成一份本地报告,并用 18 条规则做离线分析。这些内容都留在手机里,不会上传——想请人帮忙,得你自己把完整日志发出去。
这一页把两件事讲清:诊断能查出什么、修不了什么;崩溃报告从哪来、怎么看、怎么导出。看不懂英文报错也能用,因为结论已经翻译成中文了。
进门先跑诊断,它只读不改,跑多少次都不会动你的文件。
共 11 类检查,能一键修的只有 5 类,修完还有红色项很正常。
诊断报告没有复制和分享按钮,想留证据只能截图或改用崩溃报告。
崩溃报告不上传,只留在手机里,求助时必须自己发出去。
什么时候该来,从哪进去#
四种情况,先跑诊断比先问人快:
点了启动没反应,或者卡在某个阶段迟迟不动。
日志里出现
java: not found、UnsupportedClassVersionError、fontconfig这类和环境有关的报错。服务端显示运行中,但游戏里连不上,想确认端口到底有没有监听。
刚换了核心、Java 版本或 PRoot 容器,不确定环境是否还完整。
如果是「跑着跑着消失、没有任何报错」,多半是被系统杀了,先看 后台保活与桌面小组件。
诊断和崩溃报告是两个页面,入口有几个:
| 入口 | 到哪 | 说明 |
|---|---|---|
| 更多 → 运行诊断 | 诊断页 | 完整的 11 类检查 |
| 概览「启动服务端」卡右上角的警示三角 | 诊断页 | 就在启动设置齿轮的左边;它的无障碍描述本身就是当前结论 |
| 更多 → 崩溃报告 | 崩溃报告页 | 已经崩过、要找原因时直接来 |
诊断页一进去就自动跑一次,不需要先点按钮。顶部摘要会告诉你当前状态:「正在读取运行环境和当前服务端状态」「未发现需要处理的问题」,或者「发现 N 项需要注意的问题」。下面两个按钮:「重新诊断」和「一键安全修复」。
诊断是只读的,跑多少次都不会动你的文件;反倒是「删了重装」「清空运行环境」会真的丢东西。卡住时先诊断,拿到结论再决定改什么。
11 类检查各看什么#
检查项会随核心类型和运行状态变化,总共 11 类:
| 检查 | 它在看什么 | 能一键修吗 |
|---|---|---|
| Termux 运行环境 | 运行环境是否就绪、能否执行命令 | 能 |
| Java 运行环境 | 你选的那套来源和版本是否装好、能否启动 | 能 |
| PRoot 容器 | 容器 shell 能否用、里面有没有装 Java | 只修「容器在但 shell 不可用」 |
| 关键运行命令 | proot、wget 这类命令在不在 | 能 |
| 字体运行库 | 需要 installer 的核心缺不缺字体库 | 能 |
| 当前服务端 | 服务端目录是否存在可读写、入口 jar 在不在 | 不能 |
| 服务端目录空间 | 服务端目录所在分区还有多少可用空间 | 不能 |
| 本地端口 | 服务端运行中时,本地端口能不能连上 | 不能 |
| 最近崩溃报告 | 有没有新的应用报告或原生崩溃报告 | 不能 |
| NeoForge 原生库兼容性 | 只在「核心是 NeoForge 且 Java 不是 8」时出现,固定提醒 | 不能 |
| 运行诊断 | 诊断过程自身出错时的兜底项 | 不能 |
几个容易误读的结果。每条检查只有四种状态:通过、注意、失败、不适用:
「不适用」不是失败。比如服务端没在跑,「本地端口」会显示「未检测端口」;当前核心不需要 installer 时,「字体运行库」也不会检查。
端口检查在刚启动 15 秒内可能显示「服务端启动中,稍后复检」,重跑一次诊断即可。
PRoot 容器「可用但没装 Java」只是提醒,应用不会替你装。
NeoForge 的 JNA 提醒是环境兼容性问题,页面自己写了「无法通过补字体或一键修复解决」。
「服务端目录空间」这一项值得单独重视:它显示的是服务端目录所在分区的可用空间(形如「可用 3.2 GB」)。备份、世界生成、日志都会吃这个空间,低于 1 GB 时就该清一清了,别等到写不进去才发现。
「一键安全修复」能修什么,不能修什么#
按下「一键安全修复」后,应用做的顺序是固定的:先修容器的目录权限,再补齐关键运行命令;环境就绪的话,再补运行环境和字体。页面上的提示说得很明确:
安全修复只补齐运行环境、Java、命令和字体,不会删除服务器、世界、插件、配置、备份或重置 Ubuntu/Termux。
修复完成后会自动重跑诊断,不用再点「重新诊断」。它不会做的事同样重要:
不会改端口、不会帮你把端口冲突解决掉。
不会下载缺失的核心 jar,也不会重装 Forge installer。
不会处理崩溃报告,也不会替你分析。
不会修 NeoForge 的原生库限制。
所以「修完还是红的」很正常:一半项目本来就不可自动修复,看详情比反复点修复有用。
「一键安全修复」的前提是不动数据。如果你自己跑去环境管理里卸载 Termux 环境或删掉 PRoot 容器,那是另一回事:容器里的 Java、依赖全没了,重建要重新下载几百 MB。相关操作见 运行环境与依赖管理。
诊断报告没有复制和分享按钮#
这是最容易被误会的一点:诊断结果没有复制、分享、导出按钮。页面上只有「重新诊断」「一键安全修复」,每条检查卡片也只是状态点 + 标题 + 详情。
想留证据,只有两条路:
截图:把有问题的几条卡片截下来,够说明现象。
改用崩溃报告:崩溃报告页有完整的复制和分享能力,而且内容更全(见下一节)。
诊断页底部还有一张「应用崩溃日志」卡片,显示应用自身记录的崩溃日志:默认只露最后 6 行,可以「展开全文 / 收起」,也能「清空记录」。它适合快速确认「应用自己有没有出过错」,不适合当报告转发。
社区里最常见的情况是:只发一张摘要截图,别人完全不知道是哪一项、报了什么。要请人帮忙,请给崩溃报告里的完整日志,或者至少把红色项的标题和详情一起截图。诊断页没法一键导出,只能手动补。
崩溃报告:两种来源合成一张列表#
崩溃报告页会把两类东西合并,按时间倒序排列:
应用自建报告:服务端之前运行过、且退出码不是 0 时生成,存在应用私有目录的
crash-logs/下,文件名带时间戳。内容依次是:头部(时间、退出码、进程状态)→ 应用日志尾部(最多 400 行)→ 关键片段(Watchdog、异常栈、致命错误)→ 最近日志(latest.log最后 800 行)→ MC 原生崩溃报告全文。latest.log不存在或为空时,报告里会直接写明,不会留白让你猜。核心原生报告:每个服务器目录下的
crash-reports/*.txt,是核心自己写的崩溃报告,文件名形如crash-2026-10-25_14.30.00-server.txt。
列表每一项显示文件名、主标签、时间和大小。如果分析器判断是 Java 相关问题,右侧还会出现「前往安装」按钮,直接跳到环境管理页装对应版本。
exit=137 值得单独说一句:它通常表示进程被 SIGKILL 强杀,而不是 Java 抛了异常。看到 137 先查内存压力和后台限制(恢复思路见 崩溃与存档损坏),不要一头扎进代码层。
打开一份报告:摘要、原始报告、完整日志#
点开一条报告会弹出对话框,顶部有三个 Tab:
| Tab | 里面是什么 | 什么时候看 |
|---|---|---|
| 摘要 | 退出码、逐条 Caused by:、命中的问题标签与建议 | 想快速知道「大概是什么问题」 |
| 原始报告 | 应用生成的报告原文,含日志尾部与原生报告 | 要核对细节、贴给别人 |
| 完整日志 | 本次运行的完整服务端日志 | 摘要没命中时看上下文 |
分析器纯离线:18 条内置规则做关键词匹配,命中后给「标签 + 说明 + 建议」,并标出是明确命中、可能相关还是仅作提醒。常见的有 Java 版本不兼容、端口被占用、内存不足、模组或插件不匹配、核心损坏、世界存档异常、缺本地库、字体库缺失、EULA 未接受。
一条都没命中时会说「未能明确归因」,建议看原始报告里的第一个异常和完整 Caused by 链。
复制、分享,以及崩溃怎么判定#
对话框底部有「复制」和「分享」两个按钮,行为不一样:
复制:复制当前 Tab 的文本。在摘要页复制到的是摘要,在完整日志页复制到的是完整日志。
分享:走系统分享面板,分享始终发送完整内容——崩溃报告全文 + 本次运行的完整日志,跟你停在哪个 Tab 无关。
对话框顶部那条红色提示值得照做:不要只把总结发给别人,直接发完整日志。摘要里的「Java 版本不兼容」可能对应好几种原因,别人拿到全文才能判断。
报告不会上传。应用里没有任何把崩溃报告发到服务器的逻辑,唯一的外发路径就是你自己点「分享」。所以不用担心隐私,但也意味着官方看不到你的崩溃,要反馈得主动发。
至于「这次算不算崩溃」,应用看的是退出码和启动窗口,不看关键词。这样误判更少:正常 stop 退出不会生成报告,而异常退出即使日志没写任何异常也会被记录。但你自己排查时,关键词仍是最快的入口:想知道「是不是崩了」看退出码,想知道「为什么崩」看摘要再去 小白看日志 对照关键词。
诊断全绿,但就是开不起来#
这是最让人抓狂的情况:11 项全绿,一点启动还是失败。别怀疑诊断坏了——诊断只覆盖环境层,它检查的是「运行环境在不在、Java 能不能启动、命令有没有、字体缺不缺、目录能不能写、端口能不能连」,它不判断下面这些:
| 诊断看不到的东西 | 该去哪查 |
|---|---|
| 核心和 MC 版本不匹配、核心 jar 损坏 | 启动失败排查 |
| 插件或模组冲突、缺前置依赖 | 模组冲突与插件报错 |
server.properties 写错、端口改了没重启 | 服务器配置页 |
| 世界存档损坏 | 崩溃与存档损坏 |
| 服务端在跑,但外部连不上 | 联机排错 |
还有一条容易忽略的:端口检查只是「本机连得上」,它证明不了外面的玩家能连上。局域网、隧道、NAT 是另一层的事,所以「端口通过」不等于「朋友能进」。
求助时按这个格式写:「核心是 Paper 1.21.1,Java 21,诊断里 X 项红色,终端最后三行是……,已附崩溃报告完整日志。」比「开不起来怎么办」有用十倍——而且对方能直接告诉你下一步点哪里。
推荐的顺序是:诊断 → 崩溃报告 → 终端最后几十行 → 对应专题。诊断排除环境,崩溃报告给出退出码和第一现场,终端补上下文,专题文章告诉你具体怎么改。
诊断页跑完,顶部摘要能读出结论(无问题,或「发现 N 项」)。
红色项的标题和详情都看过了,不是只看了颜色。
点过「一键安全修复」之后,诊断自动重跑了一次。
「本地端口」一项在服务端运行时显示通过,而不是「未检测端口」。
崩溃报告列表里能打开一条,三个 Tab 都能切换。
知道诊断页没有导出按钮,留证据要靠截图或崩溃报告。