В 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
Я не уверен, почему он появился сейчас, но он работал нормально всего несколько часов назад. Нужно ли перезагрузить мою машину? Как мне добраться до сути? Я ценю любые советы или рекомендации.
Ответы:
Да, у вас есть другой процесс, связанный с тем же портом.
TCPView (только для Windows) из Windows Sysinternals - мое любимое приложение, когда у меня возникает ошибка JVM_BIND. Он показывает, какие процессы прослушивают какой порт. Он также предоставляет удобное контекстное меню, чтобы либо убить процесс, либо закрыть мешающее соединение.
источник
netstat
- это команда, которую вы ищете, с опциями -a и -p,man netstat
это ваш друг для всех остальных :)Если вы знаете , какой порт процесс запущен, можно ввести:
lsof -i:<port>
.Например,
lsof -i:8080
чтобы перечислить процесс (pid), запущенный на порте 8080.Затем убить процесс с
kill <pid>
источник
sudo apt-get install lsof
java.net.BindException: Address already in use (Bind failed)
которую использовалlsof -i:8080
и получилtcp6 0 0 :::8080 :::* LISTEN 106872/java
. Что я должен делать ? Убить яву ??htop
. Может быть, вы пытаетесь привязать порт, используемый действующей программой, которую нельзя уничтожать.В окнах
перечислит все протоколы, порты и процессы прослушивания. использование
убить процесс прослушивания порта. например
источник
find
не работает, ноfindstr
сделал. Чтобы избежать ложных срабатываний, это также помогает добавить двоеточие, напримерnetstat -ano | findstr :8080
. Сделав это - допустим, он вернул PID 1234 - если вы затем захотите посмотреть название этого процесса, это можно сделать черезtasklist /fi "pid eq 1234
".В Mac:
Убить процесс Терминал:
kill <pid>
Найти pid: Терминал:
lsof -i:<port>
От Диего Пино отвечу
источник
В Ubuntu / Unix мы можем решить эту проблему в 2 этапа, как описано ниже.
Тип
netstat -plten |grep java
Это даст вывод, похожий на:
Вот
8080
номер порта, на котором слушает java-процесс, и9488
его идентификатор (pid).Чтобы освободить занятый порт, мы должны убить этот процесс с помощью
kill
команды.9488
это идентификатор процесса из ранее. Мы используем,-9
чтобы принудительно остановить процесс.Теперь ваш порт должен быть свободен, и вы можете перезагрузить сервер.
источник
(Только для Windows)
Чтобы убить процесс, сначала нужно найти идентификатор процесса (pid).
Запустив команду:
Вы получите свой Идентификатор процесса (PID). Чтобы убить тот же процесс, выполните следующую команду:
источник
У вас есть другой процесс, запущенный на том же порту.
Вы можете попытаться убить одну из служб java.exe, запущенных в вашем диспетчере задач - ps убедитесь, что вы не уничтожили eclipse, поскольку он также указан как java.exe. Если ничего не работает, перезапуск вашей машины все равно исправит это. Похоже, вы не закрыли сокет из предыдущего теста. Надеюсь это поможет.
источник
Для тех, кто ищет самый простой из ответов (поскольку это то, что мы обычно упускаем), просто остановите запущенный проект и запустите его снова. В большинстве случаев мы забываем остановить проект, который запускали ранее, и при повторном запуске проекта возникает такая проблема.
Я также прилагаю фотографию, чтобы сделать ее более понятной (я использую 'Spring tool suite'). Так что вам нужно либо нажать кнопку справа, если вы хотите перезапустить тот же проект, либо сначала нажать кнопку, расположенную на 2-й позиции справа, чтобы остановить ваш проект, а затем кнопку слева, чтобы запустить ваш проект. Я надеюсь, что это решит проблему немногих из новых программистов. :)
источник
В строке Windows CMD найдите идентификатор процесса, который удерживает соединение через порт привязки, введя следующую команду:
C:> netstat -a -o
-а показать все соединения
-о показать идентификатор процесса
И затем прекратить процесс.
источник
Да, как сказал Гвидо Симоне, потому что другой процесс прослушивает тот же порт. Если вы находитесь в Ubuntu, вы можете просто убить этот процесс, дав команду
sudo kill $(sudo lsof -t -i:[port number])
например:
sudo kill $(sudo lsof -t -i:8080)
Но однажды это не сработало для меня. я дал команду
и это ничего не показывает.
Я проверил свои контейнеры
docker ps -a
докеров с помощью команды, но ни один из них не остался в живых. Все контейнеры остановились (но я помню, я остановил один контейнер, который использовал тот же порт несколько минут назад.). Чтобы убедиться, что докер не является причиной, я остановил весь Докер процесс с помощью командыsudo service docker stop
и попробуйте снова. Удивительно, но затмение не показывало ошибку в то время. Она отлично запускала мою программу.Надеюсь, мой опыт кому-нибудь поможет.
источник
Вам нужно закрыть свой порт, если вы являетесь пользователем Linux, а затем введите
источник
Порт уже используется каким-то другим процессом, так как @Diego Pino сказал, что вы можете использовать lsof в unix, чтобы найти процесс и уничтожить соответствующий, если вы находитесь в Windows, используйте netstat -ano, чтобы получить все pid процесса и порты, которые каждый приобретает. ищи нужный порт и убей.
чтобы было очень просто перезагрузить машину, если это возможно :)
источник
Перезагрузите компьютер один раз, я думаю, что он будет работать. Это начало работать в моем случае. Еще одну вещь можно сделать, перейдите в диспетчер задач и завершите процесс.
источник
В моем случае Tomcat работал в фоновом режиме. Я установил его как внешний сервлет при использовании Eclipse. С помощью Spring Boot в Intellij у него есть собственный сервер, но он не может запуститься, пока он уже занят.
В моем случае Tomcat запускается автоматически, я включаю свою ОС, поэтому мне нужно выключить его вручную:
Конечно, "Tomcat" зависит от того, какую версию Tomcat вы используете.
Надеюсь, это может кому-то помочь.
источник
Я столкнулся с подобной проблемой в Eclipse, когда две консоли были открыты, когда я сначала запустил программу Server, а затем программу Client. Раньше я останавливал программу в единственной консоли, думая, что она закрыла сервер, но закрыла только клиент, а не сервер. Я нашел запущенные процессы Java в моем диспетчере задач. Эта проблема была решена путем закрытия программ сервера и клиента из их отдельных консолей (Eclipse показывает консоль последней активной программы). Поэтому, когда я снова запустил серверную программу, порт снова был открыт для захвата.
источник
Ваш порт должен быть занят каким-то другим процессом. Таким образом, вы можете скачать TCPView на https://technet.microsoft.com/en-us/sysinternals/bb897437 и завершить процесс для используемого порта.
Если вы не знаете свой порт, дважды щелкните по серверу, который не запускается, нажмите «Открыть страницу свойств сервера» и нажмите «Glassfish» в левом столбце. Вы найдете порты здесь.
источник
(1) проверить, используется порт или нет, убить этот процесс
$ lsof -i: [порт]
(2) другая причина - порт используется ipv6, решение:
редактировать /etc/sysctl.conf
добавить это в файл
net.ipv6.conf.all.disable_ipv6 = 1
тогда сделай это эффект
$ sudo sysctl -p /etc/sysctl.conf
или просто перезагрузите
источник
Это означает, что какой-то другой процесс уже использует порт. В случае, если этот порт используется некоторыми другими критически важными приложениями и вы не хотите закрывать это приложение, лучше выбрать любой другой порт, который можно использовать бесплатно.
Настройте ваше приложение на использование любого другого свободного порта, и вы увидите, что ваше приложение работает.
источник
Для окон :
Найти идентификатор процесса
netstat -nao | найти "8080"
Он покажет вам идентификатор процесса в виде числа.
Пример :
Здесь 18856 - идентификатор процесса
Убить этот процесс
Taskkill / PID 18856 / F
Вывод : SUCCESS: процесс с PID 18856 был прерван.
Здесь с помощью taskkill вы убиваете ID процесса: 18856
Для Linux / Mac :
Здесь вы найдете процесс, использующий
sudo lsof -t -i:8080
и убивающий его командой sudo killисточник