Tomcat java.net.BindException: адрес уже используется ошибка в Java

1. Обзор

В этом кратком руководстве мы рассмотрим причину распространенной ошибки __java.net.BindingException: адрес уже используется __error и способы его устранения.

2. Когда возникает ошибка?

Как известно, сервер Apache Tomcat по умолчанию использует порт 8080.

Номера портов варьируются от 0 до 65535, однако порт может быть занят только одним приложением в любое время .

Исключение гласит, что приложение пытается использовать порт, который уже занят каким-либо другим процессом, или мы неправильно остановили сервер Tomcat.

3. Диагностика

Чтобы устранить эту ошибку, мы можем либо убить службу, использующую этот порт, либо изменить наш веб-сервер для работы на другом порту.

3.1. Обнаружение конфликта

В этом случае нам необходимо выяснить, какое приложение использует порт.

Команда netstat может использоваться для обнаружения текущих соединений TCP/IP.

Ниже приведены команды, которые можно использовать для поиска и уничтожения процесса в разных средах.

  • В Windows ** последний столбец вывода даст нам идентификатор процесса службы, в настоящее время работающей на 8080:

netstat -ano | find "8080"

Выход:

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376

Здесь 21376 - это идентификатор процесса, который прослушивает порт 8080.

  • В среде Unix/Linux ** :

netstat -pant | grep "8080"

Выход:

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 21376

То же, что и выход Windows. Здесь 21376 - это идентификатор процесса, который прослушивает порт 8080.

  • В Mac OS X: **

lsof -t -i :8080

Выход:

21376

Он будет отображать только PID.

3.2. Запуск сервера на другом порту

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

Чтобы изменить порт Tomcat, нам нужно отредактировать файл server.xml . Сделать это:

  • Откройте папку _tomcat/conf _

  • редактировать server.xml

  • замените _connector порт with new port_

  • перезапустите сервер Tomcat

Файл server.xml выглядит следующим образом:

<Connector port="8080" protocol="HTTP/1.1"
  connectionTimeout="20000" redirectPort="8443"/>

Теперь Tomcat будет работать на настроенном порту.

3.3. Убить работающую службу

  • Чтобы остановить запущенный процесс, мы можем использовать команду kill . **

Используя идентификатор процесса, который мы нашли в 3.1., Нам потребуются разные команды в зависимости от операционной системы, которую мы используем.

  • В среде Windows: **

taskkill/F/PID 21376
  • В среде Unix/Linux: **

kill - 21376
  • Среда Mac OS X: **

kill -9 21376

4. Заключение

Как упоминалось в начале статьи, java.net.BindingException является распространенной, но легко решаемой ошибкой.

Основная трудность заключается в том, чтобы найти конфликтующий сервис, используя порт с терминальным приложением netstat , а затем принять решение о соответствующем курсе действий.

После обнаружения исправить это легко.