MC Toolkit

指南 / 故障排除

退出代码不是崩溃原因,它只是一声无奈的耸肩

那个数字什么也说明不了。它上面那一行才说明一切,而那一行早就躺在你的日志文件夹里了。

一个 Java 服务器挂掉时会打印 Exit Code 1 然后停止。这就是全部信息。退出代码 1 的意思是“进程异常结束”——它是一个类别,不是原因,它涵盖的范围从缺失的世界文件夹到在类加载期间抛异常的模组,无所不包。

真正的答案在哪里

退出代码是 logs/latest.log 的最后一行。原因在它前面的那些行里。从末尾往前读,直到你遇到第一个 ExceptionCaused by:Failed to。那一行会指出出问题的类、模组或文件。

[Server thread/ERROR]: Encountered an unexpected exception
java.lang.NoSuchMethodError: net.minecraft.world.level.Level.getBiome
    at com.example.mod.ExampleMixin.inject(ExampleMixin.java:41)
Caused by: java.lang.NoClassDefFoundError: com/example/lib/Helper

这里的 NoClassDefFoundError 是缺失依赖,不是世界损坏。退出代码对这些只字未提。

你实际会遇到的退出代码

代码通常含义
0正常关闭——/stop 或计划重启
1未处理的异常,或 JVM 拒绝启动
137被操作系统杀死,几乎总是 OOM killer 干的
143SIGTERM——容器编排器把它停掉了

代码 137 就是那个常被误读为崩溃的。JVM 并没有失败;是它外部的某个东西认定这个进程占用了太多内存。

Java 和 Bedrock 不是同一个问题

Bedrock 的服务器会写入 bedrock_server.log,而且根本不输出 Java 风格的退出代码——它会转储一份崩溃处理报告,里面包含堆栈跟踪和一行 Crash report。为 Java 日志写的建议套不到它身上。

模组环境的失败方式不一样

装了模组之后,第一个异常往往只是症状。一个 mixin 应用失败会产生连锁反应,真正的元凶是第一个 Mixin apply failed 行,而不是三十行之后的那个 NoSuchMethodError。在日志里搜索 Mixin,再去搜 Exception

检查服务器是否还活着

日志告诉你它为什么死了。它不会告诉你它现在是否还活着。对服务器端口做一次 TCP 检查,一个请求就能回答这个问题,而且对 Java 和 Bedrock 都一样有效,因为两者都通过套接字通信。

把日志粘贴到 服务器诊断 工具里,就能把出错的那一行提取出来,再把你的主机地址填进去,确认服务器是否真的在响应。

Server Diagnostics →

更多指南

查看全部 →

还想找别的我的世界工具?

一整套在浏览器里运行的生成器、查看器和转换器,全部免费。