Ошибка «Port already in use»: как освободить порт 25565 и запустить сервер
Введение: порт занят — сервер не стартует
Ошибка «java.net.BindException: Address already in use: bind» появляется при запуске сервера, когда порт 25565 (или другой указанный) уже занят другой программой или предыдущим экземпляром сервера, который не был полностью закрыт. Сервер просто не запускается. В этом гайде — как найти и убить процесс, занявший порт, и как предотвратить эту ошибку в будущем.
Причина 1: Предыдущий экземпляр сервера не завершён
Вы закрыли консольное окно сервера (нажали крестик), но процесс Java остался висеть в памяти. Порт 25565 всё ещё занят этим «зомби-процессом».
Решение (Windows):
- Откройте Диспетчер задач (Ctrl+Shift+Esc).
- Вкладка «Подробности».
- Найдите процессы java.exe или javaw.exe.
- Выделите и нажмите «Снять задачу».
- Запустите сервер снова.
Решение (Linux):
- Выполните:
ps aux | grep java— покажет все Java-процессы. - Найдите процесс сервера и его PID (число во втором столбце).
- Убейте процесс:
kill -9 PID.
Причина 2: Другая программа заняла порт
Некоторые программы используют порт 25565 (редко, но бывает). Или вы запустили два сервера Minecraft на одном порту.
Решение:
- Выполните команду (Windows, от администратора):
netstat -ano | findstr :25565 - Вы увидите строку с PID (последнее число).
- Откройте Диспетчер задач, найдите этот PID и узнайте, что это за программа.
- Закройте эту программу или смените порт сервера.
Причина 3: Сервер настроен на тот же порт, что и прокси
При использовании BungeeCord/Velocity бекенд-серверы должны быть на других портах (25566, 25567), а не на 25565. Если вы пытаетесь запустить бекенд на 25565, а прокси уже слушает этот порт — ошибка.
Решение:
- В server.properties каждого бекенда укажите уникальный порт:
server-port=25566.
Причина 4: Не хватает прав на использование порта (Linux)
На Linux порты ниже 1024 требуют прав root. Порт 25565 выше 1024, так что обычно проблем нет. Но если вы по какой-то причине используете порт 80 или 443 — нужен root.
Решение:
- Используйте порт выше 1024 (например, 25565).
- Или настройте capabilities:
setcap 'cap_net_bind_service=+ep' /usr/bin/java.
Профилактика
- Всегда останавливайте сервер командой
stop, а не закрытием окна. - Используйте скрипт авто-рестарта, который проверяет, не запущен ли уже сервер, перед повторным запуском.
- На Linux используйте systemd-сервис — он гарантирует, что запущен только один экземпляр сервера.
💡 Совет профи
Создайте скриптkilljava.batдля Windows с содержимым:taskkill /F /IM java.exe. Если сервер завис и не отвечает на команду stop — запустите скрипт, он мгновенно убьёт все Java-процессы и освободит порт. Поместите ярлык скрипта на рабочий стол для экстренных случаев.
💬 Комментарии (0)
🔒 Войдите, чтобы оставить комментарий
😊 Пока нет комментариев. Будьте первым!