Minecraft Руководство

Minecraft не запускается: проверьте версию Java

Найдите Java, которую запускает служба Minecraft, сопоставьте её с версией Paper и исправьте запуск без смены Java для других служб.

Minecraft не запускается: проверьте версию Java

Если Minecraft завершается с UnsupportedClassVersionError, сначала выясните, какому компоненту нужна другая Java и какой исполняемый файл действительно запускает сервер. Установка ещё одного JDK сама по себе не меняет Java внутри службы, скрипта или контейнера.

Разбираем уже установленный Paper на Ubuntu 24.04 x86_64 с SSH и sudo. Примеры используют minecraft.service, пользователя minecraft и /srv/minecraft из инструкции по установке. Подставьте свои имена. У сборок Fabric, Forge и NeoForge собственные требования: таблица для Paper не подтверждает совместимость модпака.

Определите, какой компонент выдал ошибку#

Сохраните полный текст исключения и предшествующие строки. На VPS выполните:

bash
sudo journalctl -u minecraft --since '30 minutes ago' --no-pager
sudo systemctl status minecraft --no-pager -l
sudo systemctl show minecraft -p Result -p NRestarts

Справочник Java связывает исключение с неподдерживаемой версией class-файла. В сообщении обычно указаны версия компиляции класса и версии, которые распознаёт текущая JVM. Запишите эти числа вместе с ошибкой: чужой рецепт для старого релиза может относиться к другой паре версий.

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

НаблюдениеЧто проверитьСледующее действие
JAR сервера падает до завершения запускаТочный релиз скачанного Paper и его требованияСопоставить Java с этим релизом
Paper запускается, но падает названный плагинВерсии Paper и Java, поддерживаемые плагиномВыбрать совместимую сборку или проверить обновление на копии
Unable to access jarfileРабочий каталог, имя файла и праваИсправить путь; обновление Java эту ошибку не устраняет
OutOfMemoryError или процесс исчезаетЖурналы приложения и ядраПерейти к диагностике памяти
Сопоставьте сбойный компонент и версию сервера с Java, которую запускает служба. После изменения проверьте новый процесс: сама установка Java путь запуска не меняет.

Выберите Java для нужной версии сервера#

По актуальным требованиям Paper, проверенным 12 октября 2026 года, для веток 1.20–1.21.11 рекомендована Java 21, для 26.1+ — Java 25. Если у вас Paper 26.1+, используйте Java 25. Для старых веток и плагинов проверьте отдельные ограничения до изменения конфигурации.

Не обновляйте игру только ради исчезновения ошибки. Новый релиз должны поддерживать клиенты и плагины, а преобразованный мир может не перенести откат. Перед обновлением игры нужна резервная копия её прежнего состояния. Если JAR остаётся тем же, изменение только Java не добавляет преобразование мира в эту диагностику.

Найдите Java, которую использует служба#

Сравните окружение SSH и настройки unit-файла:

bash
command -v java
java -version
sudo systemctl cat minecraft
sudo systemctl show minecraft -p User -p WorkingDirectory -p ExecStart -p MainPID

Прочитайте основной unit и его drop-in-файлы. Если ExecStart вызывает shell-скрипт, проверьте и скрипт: внутри может быть прописан старый путь Java или запуск другого файла. JAVA_HOME влияет на загрузчик, который использует эту переменную; установка её в SSH не меняет уже работающую системную службу. Поведение описано в спецификации systemd.

В unit из нашей инструкции Java — основной процесс. Пока он работает, проверьте исполняемый файл:

bash
MC_PID="$(systemctl show minecraft -p MainPID --value)"
if [ "$MC_PID" -gt 0 ]; then
  sudo readlink -f "/proc/$MC_PID/exe"
  sudo ps -p "$MC_PID" -o pid,user,args
fi

Если основной процесс — обёртка, этот путь относится к ней. Найдите процесс Java в дереве службы через systemctl status и проверьте его PID. Завершившийся процесс уже не даст таких данных: используйте путь из конфигурации и журнал запуска. Перед публикацией аргументов удалите из них секреты.

У контейнера своя файловая система и Java. Установка JDK на Ubuntu-хост не обновляет runtime внутри контейнера. Меняйте образ или настройки загрузчика через систему, управляющую сервером, сохраняя существующие тома с данными.

Установите выбранную Java, если её нет#

Если совместимый JDK уже установлен, используйте его. Для Paper 26.1+ без Java 25 можно подключить подписанный apt-репозиторий по инструкции Corretto для Debian. Если репозиторий и keyring уже существуют, проверьте их и пропустите создание. Не перезаписывайте чужие файлы репозиториев.

bash
sudo apt update
sudo apt install -y ca-certificates curl gnupg
curl -fsSLo /tmp/corretto.key https://apt.corretto.aws/corretto.key
sudo gpg --dearmor -o /usr/share/keyrings/corretto-keyring.gpg /tmp/corretto.key
echo 'deb [signed-by=/usr/share/keyrings/corretto-keyring.gpg] https://apt.corretto.aws stable main' | sudo tee /etc/apt/sources.list.d/corretto.list
sudo apt update
sudo apt install -y java-25-amazon-corretto-jdk libxi6 libxtst6 libxrender1

Для выбранной ветки Paper 1.20–1.21.11 вместо пакета Java 25 используйте подтверждённый пакет Corretto 21, java-21-amazon-corretto-jdk. Дополнительные библиотеки указаны в руководстве Paper для Linux.

Найдите путь установленной Java 25; если выбрали Java 21, замените имя пакета:

bash
dpkg -L java-25-amazon-corretto-jdk | grep '/bin/java$'

Проверьте этот абсолютный путь с -version, в том числе от имени пользователя службы. Замените заглушку в примере:

bash
MC_JAVA='/ABSOLUTE/PATH/TO/java'
"$MC_JAVA" -version
sudo -u minecraft "$MC_JAVA" -version

Команда должна показать нужную Java, а пользователь minecraft — иметь возможность её запустить. Выберите файл непосредственно для этой службы. Изменение глобального Java alternatives может затронуть другие приложения, при этом загрузчик с прописанным путём продолжит использовать старый файл.

Измените одну службу и проверьте следующий запуск#

Сохраните текущий unit и его drop-in-файлы, чтобы восстановить точную прежнюю команду запуска. Для unit с прямым запуском Java из нашей инструкции выполните sudo systemctl edit minecraft и добавьте следующий drop-in. Вместо /ABSOLUTE/PATH/TO/java укажите проверенный путь:

ini
[Service]
ExecStart=
ExecStart=/ABSOLUTE/PATH/TO/java -Xms1G -Xmx2G -jar paper.jar --nogui

Пустое присваивание очищает прежний ExecStart. Вторая строка сохраняет параметры heap и JAR из инструкции. Для другого сервера оставьте его реальные аргументы и рабочий каталог; не заменяйте собственную обёртку этим примером, не разобравшись в её работе.

В согласованное время обслуживания выполните:

bash
sudo systemctl daemon-reload
sudo systemctl restart minecraft
sudo systemctl show minecraft -p ExecStart -p MainPID -p Result
sudo journalctl -u minecraft --since '5 minutes ago' --no-pager

Снова проверьте исполняемый файл нового PID. Дождитесь Done, убедитесь, что ранее падавшие плагины загрузились, и подключитесь подходящим клиентом. Статус active или успешный java -version отдельно не подтверждает ни готовность игры, ни совместимость плагинов. Если запуск снова не удался, сохраните новую ошибку до следующего изменения.

При дальнейшем администрировании мониторинг поддерживаемых серверов на собственном VPS через Nexardo помогает сохранять рабочий контекст. Подключение VPS и настройка сервера в панели выполняются отдельно от этой вручную созданной службы.

Если другая Java вызывает новый сбой, верните сохранённую команду и перечитайте unit. Откат JAR игры также требует совместимых копий мира и плагинов до обновления: не соединяйте старый JAR с уже преобразованным миром. Храните журналы неудачного и исправленного запуска вместе с номерами сборок Paper, плагина и путём Java — при следующем обновлении будет понятно, что именно изменилось.