Как устранить ошибку" java.net.BindException: Address already in use: JVM Bind"?
в Eclipse, я получил эту ошибку:
run:
[java] Error creating the server socket.
[java] Oct 04, 2012 5:31:38 PM cascadas.ace.AceFactory bootstrap
[java] SEVERE: Failed to create world : java.net.BindException: Address already in use: JVM_Bind
[java] Java Result: -1
BUILD SUCCESSFUL
Total time: 10 seconds
Я не уверен, почему он появился сейчас, но он работал нормально всего несколько часов назад. Мне нужно перезагрузить компьютер? Как мне докопаться до сути? Я ценю любые советы или рекомендации.
16 ответов:
Да у вас есть другой процесс, привязанный к тому же порту.
TCPView (только для Windows) с Windows Sysinternals это мое любимое приложение, когда у меня есть ошибка JVM_BIND. Он показывает, какие процессы прослушивают какой порт. Он также предоставляет удобное контекстное меню, чтобы либо убить процесс, либо закрыть соединение, которое мешает.
Если вы знаете, что порт работает процесс, вы можете ввести:
lsof -i:<port>.например,
lsof -i:8080, чтобы вывести список процессов (pid), запущенных на порту 8080.затем убить процесс с
kill <pid>
в windows
netstat -anoперечислит все протоколы, порты и процессы прослушивания . Используйте
taskkill -pid "proces to kill" /fубить процесс прослушивания порта. е.г
taskkill -pid 431 /f
на Ubuntu / Unix мы можем решить эту проблему, выполнив 2 действия, как описано ниже.
1. Use netstat -plten |grep javaэто даст выход, как это
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1001 76084 9488/javaздесь порт нет 8080 на котором запущен процесс java. И его идентификатор процесса (pid) составляет
9488перед java (9488/java).2. Now to resolve the Address already in use problem you have to kill this process using this command.
kill -9 9488здесь: -9 для принудительной остановки и 9488 - это идентификатор процесса.
теперь снова запустите сервер.Надеюсь, этот ответ будет полезен для вас, ребята.
У вас есть другой процесс, работающий на том же порту.
вы можете попробовать убить одного из java.exe-службы, работающие в вашем диспетчере задач - ps убедитесь, что вы не убиваете eclipse, так как это указано как java.а также exe. Если ничего больше не работает, перезагрузка компьютера будет исправить это в любом случае. Похоже, вы не выключаете сокет из предыдущего теста. Надеюсь, это поможет.
в строке CMD Windows найдите идентификатор процесса, который содержит соединение на порту привязки, введя следующую команду:
C:> netstat-a-o
- a показать все соединения
-o показывает идентификатор процесса
а то завершить процесс.
для тех, кто ищет самый простой из ответов (как это то, что мы обычно пропускаем), просто остановите свой запущенный проект и запустите его снова. В большинстве случаев мы забываем остановить проект, который мы запускали ранее, и когда мы повторно запускаем проект, он показывает такую проблему.
Я также прикрепляю фотографию, чтобы сделать ее более четкой (я использую "Spring tool suite"). Итак, что вам нужно сделать, это либо нажать кнопку в крайнем правом углу, если вы хотите перезапустить тот же проект или сначала нажмите на кнопку, которая является 2-й справа, чтобы остановить ваш проект, а затем кнопку в крайнем левом углу, чтобы запустить свой проект. Я надеюсь, что это решит проблему нескольких новых программистов. :)
да, как сказал Гвидо Симоне, потому что другой процесс прослушивает тот же порт.Если вы находитесь в Ubuntu, вы можете просто убить этот процесс, давая команду
sudo kill $(sudo lsof -t -i:[port number])пример:
sudo kill $(sudo lsof -t -i:8080)но однажды это не сработало для меня. я дал команду
$ lsof -i:[port]и это ничего не показывает.
Я проверил мои контейнеры docker с помощью команды
docker ps -aно ни один из них не жив.Все контейнеры остановились (но я помню, я остановил один контейнер, который был использован же порт несколько минут назад.). чтобы убедиться, что docker не является причиной, я останавливаю весь процесс docker с помощью командыsudo service docker stopи попробуйте снова. Удивительно, но eclipse не показал ошибку в то время.он отлично запускал мою программу.надеюсь, что мой опыт поможет кому-то одному.
порт уже используется каким-то другим процессом, поскольку @Diego Pino сказал, что u может использовать lsof в unix для поиска процесса и убить соответствующий, если вы находитесь в windows, используйте netstat-ano, чтобы получить все pids процесса и порты, которые каждый приобретает. найдите нужный порт и убейте.
чтобы быть очень легко просто перезагрузить машину, если это возможно :)
Я столкнулся с подобной проблемой в Eclipse, когда были открыты две консоли, когда я сначала запустил серверную программу, а затем клиентскую программу. Я останавливал программу в одной консоли, думая, что она закрыла сервер, но она закрыла только клиент, а не сервер. Я нашел запущенные процессы Java в моем диспетчере задач. Эта проблема была решена путем закрытия как серверных, так и клиентских программ с их отдельных консолей(Eclipse показывает консоль последней активной программы). Так что когда я снова запустил серверную программу, порт снова был открыт для захвата.
ваш порт должен быть занят в другом процессе. Таким образом, Вы можете скачать TCPView на https://technet.microsoft.com/en-us/sysinternals/bb897437 и убить процесс для используемого порта.
Если вы не знаете свой порт, дважды щелкните на сервере, который не запускается и нажмите на странице открыть Свойства сервера и нажмите на glassfish из левой колонки. Здесь вы найдете порты.
(1) Проверьте порт используется или нет, убить этот процесс
$ lsof-i: [port]
(2) Еще одна причина заключается в том, что порт используется ipv6, решение:
edit / etc / sysctl.conf
добавьте это в файл
net.протокол IPv6.конф.все.disable_ipv6 = 1
тогда сделайте это эффект
$ sudo sysctl-p /etc/sysctl.conf
или просто перезагрузка
Это означает, что другой процесс уже использует порт. В случае, если этот порт используется некоторыми другими критическими приложениями, и вы не хотите закрывать это приложение, лучший способ-выбрать любой другой порт, который можно использовать бесплатно.
настройте приложение для использования любого другого свободного порта, и вы увидите, что ваше приложение работает.




Comments