Varios puertos (8005, 8080, 8009) requeridos por el servidor Tomcat en localhost ya están en uso


258

Recibo el siguiente error cuando intento ejecutar un programa JSP simple en Tomcat en Eclipse.

Varios puertos (8005, 8080, 8009) requeridos por el servidor Tomcat v6.0 en localhost ya están en uso. Es posible que el servidor ya se esté ejecutando en otro proceso o que un proceso del sistema esté utilizando el puerto. Para iniciar este servidor, deberá detener el otro proceso o cambiar los números de puerto.

¿Cómo se causa esto y cómo puedo resolverlo?


Tuve un problema similar que resultó ser el firewall de Windows.
James Oravec

Probablemente algún proceso de no-muertos mantenga vivo a tu gato. elimine el proceso encontrando su ID y finalizándolo o reiniciando su máquina.
Felipe Leão

puede usar estos comandos para detener los servicios tomcat que ya se están ejecutando desde la consola de comandos. netstat -ano | findStr 8080para encontrar los servicios en ejecución y luego encontrar la identificación del proceso y copiar el pid y ejecutar el comando nuevamente comotaskkill /F /PID pid_number
Mdhar9e

Respuestas:


473

Ya tienes otra instancia de Tomcat ejecutándose. Puede confirmar esto yendo a http://localhost:8080su navegador web y verifique si obtiene la página de inicio predeterminada de Tomcat o una página de error 404 específica de Tomcat. Ambos son evidencia igualmente válida de que Tomcat funciona bien; si no fuera así, habría recibido un mensaje de error de tiempo de espera de conexión HTTP específico del navegador.

Necesitas apagarlo. Vaya a la /binsubcarpeta de la carpeta de instalación de Tomcat y ejecute el script shutdown.bat(Windows) o shutdown.sh(Unix). Si en vano, cerca Eclipse y luego abrir el administrador de tareas y matar a todos javay / o javawprocesos.

O si realmente lo instaló como un servicio de Windows por alguna razón (esto está destinado a la producción y no es útil cuando está desarrollando), abra el administrador de servicios ( Inicio> Ejecutar> services.msc ) y detenga el servicio Tomcat. Si es necesario, desinstale el servicio de Windows por completo. Para el desarrollo, solo el archivo ZIP es suficiente.

O si su intención real es ejecutar dos instancias de Tomcat simultáneamente, entonces debe configurar la segunda instancia para escuchar en diferentes puertos. Consulte la documentación de Tomcat para más detalles.


1
perfecto, esto me ha estado plagando por siempre. Lo ejecuté como sh shutdown.shen la terminal dentro del directorio / bin.
Danny Englander

2
Hola BalusC, me gustas! No hay shutdown.baten mi carpeta bin. Tomcat se instaló como un servicio y no como un zip. La detención del servicio Tomcat en los servicios solucionó el problema. Gracias. Chenqui
Erran Morad

1
@Borat: De nada. Tenga en cuenta que es mejor que desinstale el servicio y obtenga el zip en su lugar.
BalusC

66
"matar todos los procesos de Java y / o Java" funcionó para mí, gracias.
Thariq Nugrohotomo

3
Abrir system monitoro task managereliminar un proceso de Java que está utilizando about 400 MBo más RAMtambién resolverá el problema. Sin saberlo, está reservando el proceso.
Viper

55
kill $(ps -aef | grep java | grep apache | awk '{print $2}')
  • no es necesario reiniciar Eclipse
  • si obtiene el error anterior, simplemente ingrese esta línea en la terminal
  • Vuelva a iniciar el tomcat en Eclipse.
  • funciona solo en sistemas basados ​​en Linux (Ubuntu ..etc)

66
Esto es mejorkill $(ps -aef | grep java | grep apache | awk '{print $2}')
firesofmay

Esto no funciona para mí (Mint 17.1). Simplemente me da la ayuda para el killcomando.
Deleet

Esto funcionó para mí. Sin embargo, quería saber si tengo 2 instancias ejecutándose y tengo que forzar la detención de una utilizando este método, ¿cómo puedo averiguar cuál cerrar? Gracias
Gautam

29

Si está ejecutando en Windows intente esto en la línea de comandos:

netstat -ano

Esto mostrará todos los puertos en uso y el ID de proceso PID # del proceso que está usando ese puerto. Luego Ctrl+ Alt+ Dely abra el Administrador de tareas para ver qué proceso es ese.

Luego puede elegir cerrarlo / detenerlo o configurar su servidor para usar otro puerto. Para verificar si el nuevo puerto elegido (digamos 8010) está disponible, haga esto:

netstat -ano | grep 8010

Si no devuelve ninguna línea, entonces está bien.

Para cambiar el puerto, vaya a la vista Servidor, abra server.xml y cambie el puerto allí. El mío tiene esta entrada:

Connector port="8010" protocol="AJP/1.3" redirectPort="8443"

Consulte mi nueva respuesta en la que incluyo un script de PowerShell para automatizar esto sin requerir que abra el Administrador de tareas.
Xharlie

1
findstrpara aquellos sin grep.
eckes

25

Si estás en un entorno mac, esto es lo que hice.

Encuentre la identificación del proceso que se ejecuta en este puerto desde la terminal, por ejemplo, 8080:

lsof -i :8080

y mátalo:

kill -9 <PID>  

Ejemplo:

Puede ver el siguiente resultado:

MacSys:bin krunal.$ lsof -i :8080

COMMAND   PID     USER   FD   TYPE     DEVICE  SIZE/OFF   NODE  NAME
java     21347   krunal  52u  IPv6      XXX      0t0      TCP  *:http-xxx (LISTEN)

y mátalo: ( kill -9 21347)


20

Pasos para liberar el puerto que ya se utiliza para ejecutar el servidor Tomcat en Eclipse

Por ejemplo, supongamos que se utiliza el puerto 8080, necesitamos liberar 8080 para ejecutar tomcat

Paso 1:

C: \ Usuarios \ nombre de usuario> netstat -o -n -a | Findstr 0.0: 8080

TCP 0.0.0.0:3000 0.0.0.0:0 ESCUCHANDO 3116

Ahora, podemos ver que el puerto de ESCUCHA es 3116 para 8080,

Necesitamos matar 3116 ahora

Paso 2:-

C: \ Usuarios \ nombre de usuario> taskkill / F / PID 3116

Paso 3: vaya a Eclipse e inicie Server, se ejecutará


14

Si usa Eclipse, haga doble clic en los servidores y haga doble clic en el servidor Tomcat, se abrirá un archivo. En ese archivo, cambie el puerto HTTP a otro número de puerto y guarde ( Ctrl+ S), luego vuelva a iniciar el servidor.


Esto funcionó para mí mientras que las otras soluciones no. Estoy usando Mint 17.1. Tuve que instalar Tomcat tanto a través de Eclipse como a través de apt-get porque no pude encontrar la carpeta donde apt-get lo instaló. Entonces, presumiblemente, es por eso que tengo dos. Aún así no pude cerrar el primero con los comandos kill.
Deleet

12

Si Eclipse dice

Varios puertos (8005, 8080, 8009) requeridos por el servidor Tomcat v6.0 en localhost ya están en uso

Este error se produce porque Tomcat puede estar ejecutándose en segundo plano, así que primero detenga ese servidor ... siga los detalles a continuación.

La solución es:

  1. Abra la vista "consola" (ventana-> mostrar vista-> Consola)
  2. Luego detenga el servidor Tomcat.
  3. Luego abra la vista "servidor" e inicie el servidor, funcionará.

¡Gracias!


Esto funcionó para mí. Solo intenté: sudo service tomcat stop
Emiliano Sangoi

10

No tengo otra instancia de Tomcat ejecutándose y ningún otro proceso utilizando el "puerto de Tomcat" (en mi caso, el puerto 8088). Eclipse envía el mismo mensaje al iniciar Tomcat:

.... El servidor ya puede estar ejecutándose en otro proceso, o un proceso del sistema puede estar utilizando el puerto. Para iniciar este servidor, deberá detener el otro proceso o cambiar los números de puerto.

Resuelvo el problema de esta manera:

  • ir al contenedor de tomcat por solicitud
  • lanzar startup.bat
  • iniciar shutdown.bat
  • iniciar tomcat por Eclipse

1
Mi problema era que los puertos 8005 y 8009 estaban ocupados, sin embargo, el puerto 8080 estaba libre y no se estaba ejecutando la instalación de Tomcat en ese momento. Su solución me ayudó a solucionar este problema, gracias.
Benas

7

Lo que hice después de leer todas las respuestas sugeridas y, como sé, mi puerto ya estaba en uso. Hice doble clic en Tomcat debajo de la pestaña Servidores en eclipse y abrió la información general y luego encontré la información del puerto. Acabo de cambiar el puerto en conflicto ya que el mío era el puerto 8009 (error mencionado durante el inicio del servidor). Lo he cambiado a 8008 y funciona bien. Intente si el puerto cambiado no estaría en uso. Se iniciará el servidor.


6

Paso 1: netstat -a -o -n y aparecerá una lista de red, busque la dirección local como 127.0.0.1:8080 y anote el PID (ecuación 3624)

C:\>netstat -a -o -n

Paso 2: taskkill / F / PID 3624 . Ejecute este comando para matar ese proceso.

C:\>taskkill /F /PID 3624

enlace para publicar


Consulte mi nueva respuesta en la que incluyo un script de PowerShell para automatizar estas dos líneas.
Xharlie

5

En Windows, use el comando para detener la instancia de tomcat que ya se está ejecutando e intente ejecutarla nuevamente en eclipse, puede funcionar.

net stop tomcat7 

O bien, puede cambiar el puerto en el XML del servidor si solo desea ejecutar en otros puertos.


4

Manera fácil de resolver su problema:

Es posible que el servidor ya se esté ejecutando en otro proceso o que un proceso del sistema esté utilizando el puerto. Para matar ese puerto, haga lo siguiente:

1) Descargue TCPView (solo 285kb) desde el siguiente enlace.

http://technet.microsoft.com/en-in/sysinternals/bb897437.aspx

2) Extraiga la carpeta e inicie la aplicación TCPView .

3) Haga clic con el botón derecho en java.exe (porque los procesos de java suelen utilizar 8009.8005 puertos) y seleccione la opción Finalizar proceso .

esto detendría otro proceso fácilmente ...

NOTA : Es posible que ejecutar TOMCATPATH ​​/ bin / shutdown.bat no apague Tomcat cuando contiene algunos subprocesos demoníacos o no administrados. En tales casos, TCPView funciona bien sin ningún problema.


2

Si está en Java EE prospectivo en Eclipse e intenta iniciar el servidor Tomcat en Eclipse en modo de depuración, obtendrá tales errores. Debe cambiar a depurar prospectivo en Eclipse. He resuelto mi problema así.


2

A veces, si los puertos no se liberan incluso después de intentar shutdown.bat lo que sugirió @BalusC, puede matar el proceso de Java. Haz los siguientes pasos:

  1. Haga clic en el menú Inicio y abra "Windows PowerShell"
  2. Haga clic derecho antes de abrir y seleccione "Ejecutar como administrador"
  3. Ingrese el comando ps. Puede ver una imagen de la siguiente manera: Powershell que muestra los procesos actuales en ejecución

  4. Vea el número de proceso del proceso "javaw". El número de proceso es el número más a la derecha en las columnas, por ejemplo, he resaltado en el número de proceso de imagen de javaw.

  5. Ingrese el comando kill. Java es asesinado y ahora debe poder ejecutar el programa.


1
Consulte mi nueva respuesta en la que incluyo un script de PowerShell para automatizar esto.
Xharlie

2

Aquí hay una opción más para probar si ninguno de los esfuerzos anteriores ayudó. Es posible que esté utilizando Eclipse desde una unidad compartida (por ejemplo, H :) . Si es así, muévalo / cópielo todo el directorio de Eclipse a C: e intente nuevamente.

Mi Eclipse no pudo abrir puertos para el servidor Tomcat (con el error anterior), ni siquiera conectarse a internet. También probé otro complemento de Tomcat (Sysdeo) que tampoco pudo abrir los puertos.

Estas son las opciones que probé:

Verificar y matar otras instancias de Tomcat

  • En el símbolo del sistema, netstat -anoy verifique si algún otro proceso está utilizando los puertos en conflicto.
  • Encuentra el PID y mátalo
  • Intente iniciar el servidor nuevamente.

Cambiar los puertos de Tomcat en Eclipse

  • En la pestaña Servidor Eclipse, haga doble clic en la instancia de Tomcat. Esto abrirá la pestaña de configuración.
  • En Puertos, cambie los números de puerto. (por ejemplo, 18080).

Mata java.exe y javaw

Vea mi otra respuesta para Eclipse que no se conecta a Internet ( https://stackoverflow.com/a/37246087/4212710 ).


2

Para usuarios de Windows:

Vaya al Administrador de tareas directamente con la combinación de teclas CTRL + MAYÚS + ESC.

Elimine los procesos "java.exe" haciendo clic derecho y seleccionando "Finalizar tarea".


2

Revisé todas las respuestas pero informing only to kill PID.

En caso de que tenga acceso a la terminal compartido por todos , no ayudará o tal vez no tenga permiso para matar PID .

En este caso lo que puedes hacer es:

Double click on server

Go to Overview and change ports in Ports Me gusta esto:

ingrese la descripción de la imagen aquí


1

La solución más simple que funciona para mí es eliminar mis aplicaciones web implementadas actuales de tomcat a través de la pestaña "Servidor". Una vez que los elimino, el problema desaparece. Simplemente vuelva a implementar su proyecto yendo a Ejecutar como> Ejecutar en el servidor.


1

El problema a menudo surge cuando Apache Tomcat no puede terminar, correctamente, a pesar de que se envió una instrucción de apagado. En mi caso, usando Tomcat 8, esto sucede con una molesta regularidad. Afortunadamente, puede usar Windows PowerShell y el netstatcomando para crear una secuencia de comandos simple para matar el proceso.

El siguiente script de PowerShell analizará la salida netstatpara encontrar cualquier proceso que esté escuchando 127.0.0.1:8005, extraer su PID y luego eliminar ese proceso:

netstat -a -o -n `
 | select -skip 4 `
 | % {$a = $_ -split ' {3,}'; New-Object 'PSObject' -Property @{Original=$_;Fields=$a}} `
 | ? {$_.Fields[1] -match '127\.0\.0\.1\:8005$'} `
 | % {Write-Host "Killing PID" $_.Fields[4] "..."; taskkill /F /PID $_.Fields[4] }

Si server.xmlconfigura Tomcat para usar un puerto o IP diferente, edite la expresión regular en la cuarta línea del script en consecuencia.

Finalmente, debo señalar que la situación es mejor en Linux porque puede indicarle a Tomcat que guarde su PID en un archivo en el momento del inicio y usar un interruptor para forzar el apagado, más tarde, el script de apagado para los sistemas 'nix ya presenta el netstatNo se requiere la capacidad de matar el proceso y el trabajo de detective .


1

Si el problema anterior se produce en un sistema operativo basado en Windows 7 o 10, el problema se produce porque Tomcat se está ejecutando como servicio de Windows. Para dejar de ejecutar Tomcat como Servicios de Windows, abra el Panel de control de Windows. Busque el servicio "Apache Tomcat" y deténgalo. La otra forma es matar el proceso que se ejecuta en el puerto 8080 usando cmd.

Abra cmd ejecutándolo como administrador.

  1. C: \ usuarios \ nombre de usuario> netstat -o -n -a | findtr 0.0: 8080
  2. TCP 0.0.0.0:8080 0.0.0.0:0 ESCUCHANDO 2160.
  3. El 2160 anterior es la identificación del proceso que se ejecuta en el puerto 8080 y elimina ese proceso con el siguiente comando
    C: \ users \ username> taskkill / F / PID 2160
  4. Vaya a IDE e inicie Servidor, se ejecutará

1

Puede deberse a que no está deteniendo su servicio Tomcat correctamente. Para hacer eso, abra su administrador de tareas allí puede ver un javaw.exeservicio. Primero pare ese servicio. Ahora reinicie su tomcat, funciona bien.


1

En mi caso, me estaba dando el error: puerto 8005 requerido por el servidor Tomcat v8.0 en localhost ya está en uso

Cambié el puerto 8005 en apache-tomcat-8.0.39 \ conf \ server.xml pero los cambios no se reflejaron. Luego hice estos cambios del eclipse. haciendo doble clic en el servidor y modificando el puerto de 8005 a 8006 y funciona. ingrese la descripción de la imagen aquí

Antes de poner 8006, verifiqué en el shell de Windows si este puerto está disponible o no. Al ejecutar el siguiente comando:

netstat -a -o -n | findstr 8006

1

Me enfrento al mismo problema y después de buscar la respuesta como se muestra a continuación: 1. abra Monitor Tomcat como se muestra a continuación: ingrese la descripción de la imagen aquí

  1. Simplemente presione detener como se muestra en la imagen a continuación:

ingrese la descripción de la imagen aquí

Finalmente funciona conmigo después de muchas pruebas y soluciones sugeridas.

Saludos cordiales, Kerelos Mikhail


0

En Eclipse, elimine sin procesar la carpeta de configuración de Tomcat en el proyecto "Servidores". Lo intenté como última esperanza y funcionó.


0

En el caso de Windows, experimenté algo nuevo ... detener el tomcat de la carpeta / bin no liberará inmediatamente el puerto 8080. Tardará entre 5 y 10 minutos en liberar el puerto. Después de 10 minutos nuevamente si intento ejecutar mi proyecto Ejecutar-> Ejecutar en el servidor ... permite ejecutarlo.

¡No estoy seguro si mi comprensión es correcta!



0

¡Ocurre cuando otros en el proyecto también están usando los mismos números de puerto que usted está usando! haga doble clic en el servidor Tomcat, cambie los números de puerto a 8585 o lo que sea. ¡El código ahora comenzará a ejecutarse!


0

Cómo matar un servicio de Windows usando PID -

  1. abrir símbolo del sistema y escribir netstat -ano
  2. encuentre el PID de los puertos que están en uso, en este caso, será 8080, 8005,8009. Digamos que el PID de estos puertos es 5760.
  3. Ahora escriba taskkill /f /pid 5760
  4. cerrará el PID y los puertos estarán disponibles para su uso. Ahora puede iniciar tomcat de manera normal con los servicios de Windows o con el propio eclipse.

Gracias

matar un servicio de Windows que está atascado al detener o iniciar


0

Varios puertos (8005, 8080, 8009) requeridos por el servidor Tomcat vX.X en localhost ya están en uso

Para verificar si otra instancia de Tomcat ya se está ejecutando o algún otro proceso está usando los puertos que puede usar:

netstat -b -aen el símbolo del sistema para windows. Esto enumera los puertos en uso y le da el ejecutable que está usando cada uno. Debes estar en el grupo de administración para hacer esto.

Puede obtener algo como esto:

TCP 192.168.0.1:8009 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]

TCP 192.168.0.1:8080 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]

TCP 192.168.0.1:8005 192.168.0.1:0 LISTENING 196 [Tomcat7.exe]

Abra el administrador de tareas Ctrl+ Shift+ Esc, y elimine Tomcat7.exeo cualquier otro proceso utilizando estos puertos.


Consulte mi nueva respuesta en la que incluyo un script de PowerShell para automatizar esto.
Xharlie

0

Tu Tomcat probablemente ya esté funcionando. Por eso tienes un error. He tenido el mismo problema antes. Lo resolví muy simple:

  1. Reinicia tu computadora
  2. Eclipse abierto
  3. Ejecute su Tomcat

Eso es todo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.