Если Minecraft завершается с UnsupportedClassVersionError, сначала выясните, какому компоненту нужна другая Java и какой исполняемый файл действительно запускает сервер. Установка ещё одного JDK сама по себе не меняет Java внутри службы, скрипта или контейнера.
Разбираем уже установленный Paper на Ubuntu 24.04 x86_64 с SSH и sudo. Примеры используют minecraft.service, пользователя minecraft и /srv/minecraft из инструкции по установке. Подставьте свои имена. У сборок Fabric, Forge и NeoForge собственные требования: таблица для Paper не подтверждает совместимость модпака.
Определите, какой компонент выдал ошибку#
Сохраните полный текст исключения и предшествующие строки. На VPS выполните:
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 для нужной версии сервера#
По актуальным требованиям Paper, проверенным 12 октября 2026 года, для веток 1.20–1.21.11 рекомендована Java 21, для 26.1+ — Java 25. Если у вас Paper 26.1+, используйте Java 25. Для старых веток и плагинов проверьте отдельные ограничения до изменения конфигурации.
Не обновляйте игру только ради исчезновения ошибки. Новый релиз должны поддерживать клиенты и плагины, а преобразованный мир может не перенести откат. Перед обновлением игры нужна резервная копия её прежнего состояния. Если JAR остаётся тем же, изменение только Java не добавляет преобразование мира в эту диагностику.
Найдите Java, которую использует служба#
Сравните окружение SSH и настройки unit-файла:
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 — основной процесс. Пока он работает, проверьте исполняемый файл:
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 уже существуют, проверьте их и пропустите создание. Не перезаписывайте чужие файлы репозиториев.
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, замените имя пакета:
dpkg -L java-25-amazon-corretto-jdk | grep '/bin/java$'
Проверьте этот абсолютный путь с -version, в том числе от имени пользователя службы. Замените заглушку в примере:
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 укажите проверенный путь:
[Service]
ExecStart=
ExecStart=/ABSOLUTE/PATH/TO/java -Xms1G -Xmx2G -jar paper.jar --nogui
Пустое присваивание очищает прежний ExecStart. Вторая строка сохраняет параметры heap и JAR из инструкции. Для другого сервера оставьте его реальные аргументы и рабочий каталог; не заменяйте собственную обёртку этим примером, не разобравшись в её работе.
В согласованное время обслуживания выполните:
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 — при следующем обновлении будет понятно, что именно изменилось.




