Руководства / Устранение неполадок
Код выхода — не причина краха, а пожатие плечами
Число не говорит вам ничего. Строка над ним говорит всё — и она уже лежит в папке с логами.
Java-сервер, который умирает, выводит Exit Code 1 и останавливается. Это всё сообщение. Код выхода 1 означает «процесс завершился аварийно» — это категория, а не причина, и под неё попадает всё: от отсутствующей папки мира до мода, который падает во время загрузки классов.
Где живёт настоящий ответ
Код выхода — это последняя строка logs/latest.log. Причина — в строках перед ней. Читайте с конца назад, пока не дойдёте до первой строки с Exception, Caused 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'ом |
| 143 | SIGTERM — остановлен оркестратором контейнеров |
Код 137 — тот, который люди ошибочно принимают за крах. JVM не сломалась; что-то извне решило, что процесс использовал слишком много памяти.
Java и Bedrock — это не одна и та же проблема
Сервер Bedrock пишет bedrock_server.log и вообще не выдаёт код выхода в стиле Java — он сбрасывает отчёт обработчика краха со стеком вызовов и строкой Crash report. Советы, написанные для логов Java, к нему не применимы.
Сборки с модами падают иначе
С модами первое исключение часто является симптомом. Неудачное применение миксина порождает каскад, в котором настоящий виновник — первая строка Mixin apply failed, а не NoSuchMethodError тридцатью строками позже. Ищите в логе Mixin прежде, чем искать Exception.
Проверка, жив ли сервер
Лог говорит вам, почему сервер умер. Он не говорит, жив ли он сейчас. TCP-проверка порта сервера отвечает на это одним запросом, и она одинаково работает для Java и Bedrock, потому что оба общаются через сокет.
Вставьте лог в инструмент Диагностика сервера, чтобы вытащить строку с ошибкой, и укажите ему свой хост, чтобы убедиться, что сервер действительно отвечает.