- Как устранить ошибку «java.net.BindException: адрес уже используется: JVM_Bind»?
- 13 ответов
- Java.net.BindException: Address already in use: JVM_Bind:8080 Solution
- How to deal with java.net.BindException: Address already in use: JVM_Bind:8080
- 1. Address already in use: JVM_Bind:8080
- Find process which is listening on port 8080 in Linux
- How to solve «java.net.BindException: Address already in use»
- 7 comments :
Как устранить ошибку «java.net.BindException: адрес уже используется: JVM_Bind»?
Я не уверен, почему это произошло сейчас, но все прошло отлично всего несколько часов назад. Нужно ли мне перезагрузить компьютер? Как мне добраться до дна? Я ценю любые советы или советы.
Я часто видел это на компьютерах разработчиков, когда вы запускаете пробные версии кода. Как избежать этой проблемы?
13 ответов
Да, у вас есть другой процесс, связанный с одним и тем же портом.
TCPView (только для Windows) из Windows Sysinternals — мое любимое приложение, когда у меня есть ошибка JVM_BIND. Он показывает, какие процессы прослушивают порт. Он также предоставляет удобное контекстное меню, чтобы либо убить процесс, либо закрыть соединение, которое мешает.
быстрое решение: откройте представление сервера> дважды щелкните по серверу> измените номера используемых портов (т. е. для администратора Tomcat, HTTP / 1.1 и AJP / 1.3)
@novice_developer netstat — это команда, которую вы ищете, с опциями -a и -p, man netstat — ваш друг для всех остальных 🙂
Если вышеуказанный процесс не работает, то перезагрузите компьютер один раз, я думаю, что он будет работать. Это начало работать в моем случае.
Если вы знаете, какой порт работает, вы можете ввести: lsof -i: .
Например, lsof -i:8080 , чтобы просмотреть процесс (pid), запущенный на порту 8080.
Затем запустите процесс с помощью kill
Да, это Linux. Тогда попробуйте что-нибудь эквивалентное в Windows. Может быть, это может помочь: stackoverflow.com/questions/15708/lsof-equivalent-for-windows
@DiegoPino Я столкнулся с той же ошибкой java.net.BindException: Address already in use (Bind failed) lsof -i:8080 java.net.BindException: Address already in use (Bind failed) Я использовал lsof -i:8080 и получил tcp6 0 0 . 8080 . * LISTEN 106872/java . Что я должен делать ? Убить яву ??
отобразит все протоколы, порты и процессы прослушивания. Используйте
taskkill -pid "proces to kill" /f
чтобы убить процесс, прослушивающий порт. например
Процесс убийства Терминал:
Найти pid: Терминал:
kill
В Ubuntu/Unix мы можем решить эту проблему, выполнив 2 шага, как описано ниже.
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1001 76084 9488/java
Здесь нет порта 8080, в котором запущен Java-процесс. И его идентификатор процесса (pid) 9488 перед java ( 9488/java ).
- Теперь, чтобы решить проблему Адрес, уже использующийся, вы должны убить этот процесс, используя эту команду.
kill -9 9488
здесь -9 для принудительной остановки, а 9488 — идентификатор процесса. Теперь снова запустите сервер.
Надеюсь, что этот ответ поможет вам, ребята.
Я настраиваю сервер CentOs В цифровом океане. Если я убью этот процесс, как я могу снова запустить сервер?
У вас есть другой процесс, выполняющийся на том же порту.
Вы можете попробовать убить одну из java.exe-служб, запущенных в вашем диспетчере задач — ps убедитесь, что вы не убиваете eclipse, так как это указано как java.exe. Если ничего не работает, перезапуск вашей машины все равно исправит. Похоже, вы не закрываете сокет из предыдущего теста. Надеюсь, это поможет.
В строке Windows CMD найдите Идентификатор процесса, который содержит соединение на порту связывания, введя следующую команду:
-a показать все соединения
-o показать идентификатор процесса
И затем Завершить процесс.
Для тех, кто ищет самый простой из ответов (поскольку это то, что мы обычно пропускаем), просто запустите свой запущенный проект и запустите его снова. В большинстве случаев мы забываем остановить проект, который мы запускали раньше, и когда мы повторно запускаем проект, он показывает такую проблему.
Я также прикрепляю фотографию, чтобы сделать ее более ясной (я использую «набор инструментов Spring» ). Так что вам нужно сделать либо щелкнуть кнопку в крайнем правом углу, если вы хотите перезапустить тот же проект или сначала нажать на кнопку, которая является 2-м справа, чтобы остановить ваш проект, а затем кнопку в крайнем левом углу ваш проект. Надеюсь, это решит проблему нескольких новых программистов.:)
Да, как сказал Гвидо Симоне, потому что другой процесс прослушивает тот же порт. Если вы в Ubuntu, вы можете просто убить этот процесс, выдавая команду sudo kill $(sudo lsof -t -i:[port number])
ex: sudo kill $(sudo lsof -t -i:8080)
Но как только это не сработало для меня. я дал команду
Я проверил контейнеры докеров с помощью команды docker ps -a , но не из них. Все контейнеры прекратились (но я помню, я остановил один контейнер, который использовался один и тот же порт несколько минут назад.) Чтобы убедиться, что докер не является причиной, я останавливаю весь процесс докеров с помощью команды sudo service docker stop и повторю попытку. Удивительно, что затмение не показало ошибки в то время. Это отлично работает моя программа.
Надеюсь, мой опыт поможет кому-то.
Java.net.BindException: Address already in use: JVM_Bind:8080 Solution
java.net.BindException: Address already in use: JVM_Bind is a common exception in Java with applications trying to connect on a particular port and some other processes either Java or non Java is already connected on that port. You can get «Address already in use: JVM_Bind» error while doing remote debugging in Java in Eclipse, when Eclipse trying to connect to remote Java application when you are starting tomcat and another instance of tomcat is listening on port 8080 you will get java.net.BindException: Address already in use: JVM_Bind:8080.
In this post we will analyze java.net.BindException and trying to figure out cause of «Address already in use: JVM_Bind» before fixing it. This article is in continuation of my earlier tutorial, How to Solve OutOfMemoryError in Java and How to fix ClassNotFoundException in Java.
How to deal with java.net.BindException: Address already in use: JVM_Bind:8080
1. Address already in use: JVM_Bind:8080
This exception is self-explanatory, its saying that a Java application is trying to connect on port 8080 but that port is already used by some other process and JVM Bind to that particular port, here its 8080, is failed. Now to fix this error you need to find out which process is listening of port 8080, we will how to find a process which is listening on a particular port in both windows and Linux.
Find process which is listening on port 8080 in Windows netstat command is your friend, just use netstat with find command as shown in below example:
Last column is PID of process which is listening on port «8080”, possibly a tomcat web server. You can verify it by looking into task manager and displaying PID as column.
Find process which is listening on port 8080 in Linux
Great thing is that you can use netstat command in Linux and UNIX as well, though with little difference in option it can show you process listening on a particular port, instead of «-o» I normally use «-p» and then use UNIX grep command to select particular process with PID.
How to solve «java.net.BindException: Address already in use»
Now since you have find out offending process you can kill that process and restart yours if killing that process is OK, otherwise change the port your web server is using and you will not get «java.net.BindException: Address already in use» Exception, but if you can not kill that process than you need to change your web-server configuration or eclipse configuration to listen on different port.
In case of tomcat you can change it on connector section of server.xml and in case of eclipse you can see here setting up Eclipse for Java remote debugging.
1. While doing Java remote debugging in Eclipse and when Eclipse tries to connect your remote java application on a particular port and that port is not free.
2. Starting tomcat when earlier instance of tomcat is already running and bonded to 8080 port. It will fail with SEVERE: Error initializing endpoint java.net.BindException: Address already in use: JVM_Bind:8080
3. «Address already in use jvm_bind» could also comes up with other web and application servers like weblogic, glassfish and webshere.
I don’t remember count how many times I have got Address already in use: JVM_Bind ERROR but most of the time it turns out that another instance of same process is running and listening on same port,So watch for it and it can save time for you. Some time this is also called «port already in use JVM_Bind» so don’t confuse Address and port is used interchangeably in different places.
7 comments :
Hello there, I am getting below exception, do you know what causing it :
Caused by: java.rmi.server.ExportException: Port already in use: 23602; nested exception is:
java.net.BindException: Address already in use
at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:310)
at sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:218)
INFO 2013-07-17 12:26:44,447 [main] com.mulesoft.habitat.agent.AnypointAgentUtils: Anypoint Service Registry Agent is DISABLED. Property anypoint.agent.token is missing or empty.
Exception in thread «Thread-0» java.lang.RuntimeException: Cannot open port 6666
at com.mulesoft.mule.debugger.remote.RemoteDebuggerServer.createServerSocket(RemoteDebuggerServer.java:83)
at com.mulesoft.mule.debugger.remote.RemoteDebuggerServer.run(RemoteDebuggerServer.java:33)
Caused by: java.net.BindException: Address already in use: JVM_Bind
at java.net.DualStackPlainSocketImpl.bind0(Native Method)
at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source)
at java.net.AbstractPlainSocketImpl.bind(Unknown Source)
at java.net.PlainSocketImpl.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.(Unknown Source)
at java.net.ServerSocket.(Unknown Source)
at com.mulesoft.mule.debugger.remote.RemoteDebuggerServer.createServerSocket(RemoteDebuggerServer.java:81)
. 1 more
Very useful information.Thanks a lot
Hello, I am getting Exception in thread «main» java.net.BindException: Address already in use: JVM_Bind, while running my server. I checked its not running already, but I am still getting this error, does Java keeps the port even after process is killed ?
Exception in thread «main» java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.socketBind(Unknown Source)
at java.net.PlainSocketImpl.bind(Unknown Source
Thanks for the post, that was really helpful.
To kill the port use
Windows
REM find the pid
netstat -a -o -n
taskkill /F /PID
Linux
fuser -k 8080/tcp
or
netstat -anp tcp | grep 8080
kill -9 PID
or
lsof -i tcp:8080
kill -9 PID
@Anonymous, thanks for sharing commands to find the kill a process using a certain port, which is also key to solve this error.
First time it won’t show any error.For the second time executing the same program, you have to close the first one which is running using the same port number.
in eclipse and netBeans IDE you can find the option called close in the right bottom corner.
It worked for me..Hope it will work for you too.