TeaHost
панельошибки6 мин. чтения

Сервер не запускается: ошибки запуска и решения

Сервер не запускается — разбор частых ошибок: не принят EULA, порт занят, нехватка памяти, битый плагин, несовместимая Java и повреждённые файлы мира.

Кратко

Если сервер не запускается, откройте консоль и найдите первую ошибку сверху (у Java — строку Caused by). Самые частые причины: не принят EULA (eula=true в eula.txt), порт уже занят, -Xmx больше лимита тарифа, неподходящая Java (1.20.5+ требует Java 21), несовместимый плагин, сломанный YAML и повреждённый мир, который чинится только восстановлением из бэкапа.

Нажали «Старт», статус мигнул и вернулся в «Остановлен». Или сервер вроде работает, но подключиться нельзя. Ситуация «сервер не запускается» почти всегда объясняется одной строкой в логе — проблема в том, что её надо найти среди сотни других. Разберём порядок диагностики и десяток конкретных ошибок, которые встречаются чаще всего.

Где искать ошибку, если сервер не запускается

Первое и главное: не гадайте, читайте лог. Откройте консоль в панели и прокрутите вывод к самому началу запуска.

Смотреть нужно на первую ошибку сверху, а не на последнюю. Java-стек устроен так, что одна проблема порождает каскад сообщений, и последние из них обычно вводят в заблуждение. Ищите строку Caused by: — под ней настоящая причина.

Если консоль пуста или сервер падает быстрее, чем вы успеваете прочитать, лог остаётся в файле: logs/latest.log у Minecraft, crash-reports/ при вылете, отдельные логи Oxide у Rust. Как читать вывод и где что лежит — в статье про работу с консолью сервера.

Шпаргалка по ошибкам, которые разобраны ниже:

Строка в логеПричинаЧто делать
You need to agree to the EULAНе принято соглашение Minecrafteula=true в eula.txt
FAILED TO BIND TO PORTПорт занятПодождать 30–60 секунд или сменить порт
OutOfMemoryError, Could not reserve enough spaceНе хватает памяти или -Xmx больше тарифа-Xmx на 1 ГБ меньше лимита тарифа
UnsupportedClassVersionErrorНе та версия JavaJava 21 для 1.20.5+, Java 17 для 1.17–1.20.4
Could not load 'plugins/...'Несовместимый плагин или нет зависимостиОбновить или отключить плагин
mapping values are not allowed hereСломан YAML или JSONПроверить файл и строку из сообщения
Failed to load level.datПовреждён мирВосстановить из бэкапа

Не принято лицензионное соглашение

код
You need to agree to the EULA in order to run the server.
Go to eula.txt for more info.

Классика первого запуска Minecraft. Сервер создал файл eula.txt и завершился.

Решение: откройте eula.txt и замените eula=false на eula=true. Сохраните, запустите заново. В большинстве панелей есть кнопка принятия соглашения — тогда файл править не нужно.

Порт уже занят

код
FAILED TO BIND TO PORT!
java.net.BindException: Address already in use

Два процесса пытаются слушать один порт. Причины: предыдущий запуск сервера не завершился до конца, или порт занят другим сервером.

Что делать: остановите сервер в панели, подождите 30–60 секунд и запустите снова. Если не помогло — проверьте, не висит ли второй сервер на том же номере, и при необходимости смените порт по инструкции из статьи про смену порта сервера.

Не хватает памяти

код
java.lang.OutOfMemoryError: Java heap space
Error occurred during initialization of VM
Could not reserve enough space for object heap

Первый вариант — серверу не хватило выделенной памяти во время работы. Второй и третий — сервер даже не стартовал, потому что запросил больше, чем есть на тарифе.

Проверьте параметр -Xmx в строке запуска. Он должен быть меньше лимита тарифа минимум на 1 ГБ: на тарифе с 4 ГБ ставьте -Xmx3G. Частая ситуация после даунгрейда — флаг остался от старого тарифа.

Если памяти действительно мало для сборки, сначала попробуйте оптимизацию, а уже потом апгрейд — разбор в статьях про нагрузку на игровой сервер и смену тарифа.

Неподходящая версия Java

код
UnsupportedClassVersionError: has been compiled by a more recent version of the Java Runtime

Ядро собрано под более новую Java, чем установлена. Ориентиры для Minecraft: 1.17–1.20.4 требуют Java 17, 1.20.5 и выше — Java 21, старые версии 1.12–1.16 работают на Java 8 и 11.

В панели версия Java обычно выбирается в настройках сервера или через смену образа. Поменяйте и запустите заново. Обратная ситуация тоже бывает: старое ядро 1.12 на Java 21 падает с другими ошибками, там нужна Java 8.

Плагин или мод ломает загрузку

код
Could not load 'plugins/SomePlugin.jar' in folder 'plugins'
java.lang.NoClassDefFoundError: com/example/SomeLibrary

Первая строка называет виновника прямо. Вторая означает отсутствующую зависимость — плагину нужен другой плагин или библиотека.

Порядок действий:

  1. Найдите в логе имя плагина из сообщения.
  2. Проверьте, что его версия совместима с версией ядра. Плагин для 1.20 на 1.21 часто просто не грузится.
  3. Проверьте зависимости на странице плагина: ProtocolLib, Vault, PlaceholderAPI — самые частые пропущенные.
  4. Временно отключите плагин, переименовав файл в SomePlugin.jar.off, и запустите сервер.

Если сервер поднялся без него — виновник найден. Порядок установки и проверки зависимостей описан в статье про установку плагинов.

Ошибка в конфиге

код
while scanning a simple key
mapping values are not allowed here
Expected ',' instead of '}'

Сломан YAML или JSON. Обычно после ручной правки. Сообщение содержит имя файла и номер строки — идите туда.

Три причины покрывают почти все случаи: табуляция вместо пробелов в .yml, пропущенный пробел после двоеточия (enabled:true вместо enabled: true), незакрытая кавычка или скобка. Проверить синтаксис можно любым онлайн-валидатором YAML, скопировав туда содержимое файла.

Привычка, которая экономит время: перед правкой конфига делайте копию рядом — тогда откат займёт одно переименование. Работа с файлами разобрана в статье про файловый менеджер сервера.

Повреждённый мир

код
Failed to load level.dat
Exception reading world/region/r.0.0.mca

Мир не читается. Обычно последствие жёсткого выключения сервера или заливки файлов на работающий сервер.

Единственное надёжное решение — восстановление из бэкапа по инструкции из статьи про восстановление сервера из бэкапа. Иногда помогает удаление session.lock, если ошибка про заблокированный мир, но при битых регион-файлах спасает только копия.

Сервер запустился, но не виден

Отдельный класс проблем: в консоли Done!, а подключиться нельзя.

  • Порт закрыт в фаерволе. Проверьте снаружи любым сервисом проверки портов, при необходимости откройте — как это делается.
  • Query-порт не совпадает с игровым. Сервер работает, но мониторинги и список серверов его не видят.
  • Сервер слушает не тот интерфейс. В server.properties параметр server-ip должен быть пустым, а не содержать локальный адрес.
  • Онлайн-режим. Ошибки авторизации у игроков при online-mode=true и нелицензионных клиентах — сервер тут ни при чём, вопрос настройки.
  • SRV-запись со старым портом. По IP подключение проходит, по домену нет — правьте DNS, порядок в статье про SRV-запись.

Если ничего не помогает

Универсальный способ локализовать проблему — свести сервер к минимуму. Уберите все плагины и моды, поставьте чистый конфиг, запустите. Поднялся — возвращайте компоненты половинами, пока не найдёте виновника. Не поднялся — проблема в ядре, Java или файлах сервера, и тут проще развернуть чистую установку и перенести в неё мир.

И сохраняйте лог перед экспериментами. Текст ошибки — это то, что попросит поддержка первым делом, а после десяти перезапусков исходное сообщение уже потеряется. Поддержка TeaHost отвечает в Telegram: @suphost_bot.

Большинство падений при запуске лечатся за пять минут, если начать с чтения лога, а не с перебора настроек наугад. Если нужен сервер, где панель уже настроена и Java подобрана под версию, — смотрите тарифы.