Как исправить ошибку Java при запуске сервера
Ошибки Java при запуске Minecraft-сервера на выделенном сервере Ubuntu (хостинг proxify.cloud) чаще всего связаны с отсутствием Java, несовместимой версией, неправильными параметрами памяти или некорректными правами доступа. Эта инструкция поможет вам диагностировать и исправить проблему шаг за шагом.
Все действия выполняются через SSH. Данные для подключения (IP, порт, логин, пароль) вы найдёте в панели proxify.cloud, разделе вашего сервера.
Шаг 1. Подключение к серверу
Откройте терминал (или используйте PuTTY / MobaXterm на Windows) и выполните:
ssh root@ваш_ip_адрес
Если вы сменили порт SSH, используйте ssh root@ваш_ip -p порт. После входа переходите к диагностике.
Шаг 2. Проверка установленной Java
Узнайте, установлена ли Java и какая версия используется по умолчанию:
java -version
which java
Пример вывода, если Java есть, но версия старая:
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
Для современных версий Minecraft (1.17–1.20.4) нужна Java 17, а для версий 1.20.5+ – Java 21. Java 8 подходит только для очень старых сборок (до 1.16.5). Если вывод показывает java: command not found, переходите к установке.
Проверьте также, что используется 64-битная версия (строка 64-Bit в выводе). Если вы видите 32-Bit или i386, это может вызывать ошибки нехватки памяти.
Шаг 3. Установка подходящей версии Java
Для Minecraft 1.17–1.20.4 используйте OpenJDK 17:
apt update
apt install openjdk-17-jre-headless -y
Для версий 1.20.5+ (и новых сборок, требующих Java 21):
apt install openjdk-21-jre-headless -y
Если вы не уверены, установите обе версии и настройте переключение между ними (см. шаг 4). После установки проверьте версию:
java -version
Вы должны увидеть OpenJDK 17 или 21.
Если нужна конкретная версия (например, Java 16 или 11)
apt install openjdk-16-jre-headless -y
Для установки других версий добавьте репозиторий Adoptium или используйте SDKMan, но в большинстве случаев достаточно стандартного репозитория.
Шаг 4. Настройка переменных окружения и выбор версии Java по умолчанию
Если установлено несколько версий Java, укажите нужную с помощью update-alternatives:
update-alternatives --config java
Выберите номер строки с OpenJDK 17 или 21. Затем задайте переменную JAVA_HOME. Откройте /etc/environment:
nano /etc/environment
Добавьте строку (замените путь на реальный, его можно узнать командой dirname $(dirname $(readlink -f $(which java)))):
JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
Нажмите Ctrl+X, затем Y и Enter для сохранения. Чтобы применить без перезагрузки:
source /etc/environment
echo $JAVA_HOME
Также пропишите JAVA_HOME в скрипт запуска сервера (см. шаг 6).
Шаг 5. Проверка прав доступа и скрипта запуска
Перейдите в папку сервера (например, /home/minecraft/server) и убедитесь, что файл сервера (jar) исполняемый:
cd /home/minecraft/server
ls -la server.jar
chmod +x server.jar
Если вы загружали файлы из Windows, в скриптах могут быть символы \r\n. Исправьте командой:
sed -i 's/\r//' start.sh
Либо используйте dos2unix start.sh (установите пакет dos2unix, если он не установлен).
Проверьте, что файл eula.txt существует и содержит eula=true. Если его нет, создайте:
echo "eula=true" > eula.txt
Шаг 6. Настройка параметров запуска (скрипт start.sh)
Откройте скрипт запуска (обычно start.sh или run.sh):
nano start.sh
Убедитесь, что аргументы JVM заданы корректно. Пример для сервера с 4 ГБ ОЗУ:
#!/bin/bash
java -Xms1G -Xmx3G -jar server.jar nogui
Параметры:
-Xms– начальный размер кучи (например, 1G)-Xmx– максимальный размер кучи (должен быть меньше доступной физической памяти, оставьте минимум 1–2 ГБ системе).
Если у вас небольшой объём памяти (2–3 ГБ), поставьте -Xms512M -Xmx2G. Не указывайте -Xms выше -Xmx.
Если сервер не запускается с ошибкой Error: Could not find or load main class, проверьте, что имя jar-файла совпадает (обычно server.jar, но может быть paper.jar или forge.jar).
Также укажите -Djava.awt.headless=true, если требуется.
Для диагностики добавьте флаг -verbose:gc – он выводит информацию о сборщике мусора.
Шаг 7. Запуск сервера и анализ ошибок
Выполните скрипт:
./start.sh
Если ошибка остаётся, запишите её точный текст. Ниже разобраны наиболее частые сообщения.
Частые ошибки и их решение:
"Unrecognized JVM option" или "Unrecognized VM option"
- Используются неподдерживаемые параметры (например,
-XX:UseG1GCв старой Java). Удалите или замените их. - Установите более новую версию Java.
"Error: Could not find or load main class"
- Неверное имя jar-файла в скрипте.
- Jar-файл повреждён или не является исполняемым. Скачайте заново.
- Раскомментирован
noguiпри отсутствии-jar– убедитесь, что команда имеет видjava -jar server.jar nogui.
"Error occurred during initialization of VM" / "Could not reserve enough space for object heap"
- Значение
-Xmxпревышает доступную физическую память или лимиты cgroups. Уменьшите-Xmx. - На 32-битной Java нельзя задать кучи более ~1.5 ГБ. Переустановите 64-битную версию.
- Проверьте свободную память командой
free -h.
"java.lang.OutOfMemoryError: Java heap space"
- Не хватает выделенной кучи. Увеличьте
-Xmx, но не более доступной памяти. - Используйте флаг
-XX:+UseG1GC(только для Java 11+).
"java.net.BindException: Address already in use"
- Порт (по умолчанию 25565) уже занят. Убейте старый процесс:
kill -9 $(lsof -ti:25565)или укажите другой порт вserver.properties.
"Exception in thread "main" java.lang.UnsupportedClassVersionError"
- Версия Java слишком старая для этого jar. Обновите Java до версии, требуемой сборкой (проверьте документацию сервера).
Шаг 8. Повторный запуск и проверка
После исправлений запустите сервер снова. Убедитесь, что процесс работает:
ps aux | grep java
Комментарии (0)