No se puede abrir el puerto del depurador en IntelliJ IDEA

82

Tengo el problema de que no puedo configurar mi aplicación en modo de depuración con IntelliJ IDE, pero el modo de ejecución está bien.

Mi sistema operativo es Windows 7, IDE es IntelliJ IDEA, el contenedor web es Tomcat 6. Lo he intentado durante mucho tiempo, cambié el puerto HTTP y el puerto JMX, pero no funcionó.

Cuando configuré la aplicación en modo de depuración con IntelliJ, falló y el registro de eventos es:

16:05:35 Error al ejecutar Tomcat: No se puede abrir el puerto del depurador: java.net.BindException "Dirección ya en uso: JVM_Bind".

feng smith
fuente
¿Cuál es la práctica normal y el puerto para que tomcat6 permita la depuración? Es posible que deba habilitar algunas banderas / configuraciones ...
vikingsteve
@vikingsteve ¡gracias! Es un caso ocasional, cuando reinicio mi computadora, todo está bien. Puede ser que algún puerto esté en conflicto, pero no sé cuál es.
feng smith
Genial :) También hay algunas herramientas útiles para ver qué aplicación tiene un puerto; quizás valga la pena usar una herramienta de este tipo para identificar rápidamente la fuente del conflicto. En el peor de los casos, mirar en el administrador de tareas de Windows y detener tomcat.exe, java.exe, etc. podría ayudar.
vikingsteve
¡Hay que tener cuidado! No debe configurar el puerto http por debajo de 1024 si no es el administrador o root. O siempre aparece el error "Error al ejecutar tomcat: no se puede abrir el puerto del depurador"
tiramisú

Respuestas:

148

la clave del problema está en el puerto del depurador . Estaba teniendo el mismo problema, estaba matando todos los procesos que escuchaban en el puerto 8081 (mi puerto http), 1099 (puerto JMX), el puerto de apagado de tomcat, cada java.exe y aún nada.

La cuestión es que este puerto de depuración es diferente. Si ejecuta la aplicación, pasará por el puerto para el que tiene configurado Tomcat, 8080, 8081 o lo que sea. Pero si lo ejecuta en modo de depuración, pasa por un puerto diferente.

Si va a editar su configuración de Tomcat desde IntelliJ, la última pestaña es Inicio / Conexión . Aquí vaya a ver la configuración del modo de depuración y verá su puerto. El mío era 50473. Lo cambié a 50472 y todo empezó a funcionar de nuevo.

TM
fuente
12
Gracias, funciona. Y para aquellos que quieran resolverlo cerrando el proceso que contiene el puerto, abra el administrador de tareas-> rendimiento-> monitor de recursos-> red, puede encontrar el proceso allí.
matriz
4
Qué lástima que no haya una opción de "autoasignar puerto no utilizado" XD
Gandalf
Muchas gracias. - @TM También estaba matando todos los procesos.
Raj Rajeshwar Singh Rathore
gracias, cambiar el puerto de Inicio / Conexión lo hizo por mí
Csa77
Es una pena que esto siga sucediendo con Intellij 2019.2.3. El cambio de puerto de depuración es la única forma en que pude hacerlo funcionar (aparte de reiniciar mi máquina)
cakidnyc
55

Para mí, IntelliJ Event Log(esquina inferior derecha) tenía los siguientes registros:

Error running EntitmentTooling-Debug: Cannot run program "/path-to/apache-tomcat-8.5.15/bin/catalina.sh" (in directory "path-to/apache-tomcat-8.5.15/bin"): error=13, Permission denied

Error running EntitmentTooling-Debug: Unable to open debugger port (127.0.0.1:58804): java.net.SocketException "Socket closed"

El comando

$ chmod a+x /path-to/apache-tomcat-8.5.15/bin/catalina.sh

cambiar suficientemente los privilegios funcionó para mí.

Chandan
fuente
mirar Event Loges la clave aquí, el error anterior fue la causa raíz
yunandtidus
Esta es la mejor respuesta. ¡Funciona perfectamente!
Manoj Shrestha
Gracias, su respuesta resuelve mi problema después de varios meses
saba safavi
34

Si está en Windows, puede evitar el problema del socket por completo cambiando a la depuración de memoria compartida.

ingrese la descripción de la imagen aquí

Avner
fuente
3
Esto es lo que me ayudó al final. Antes de esto, necesitaba cambiar los puertos cada pocas horas, a veces incluso eso no ayudaba ... Finalizar los procesos de Java tampoco hizo nada.
IntelliData
Muchas gracias por esta sugerencia. Después de cambiar a la memoria compartida, IntelliJ falló en otro problema (mi server.xml estaba dañado). Se arregló y se movió de nuevo a Transporte. Todo bien.
Jacques Koorts
En mi caso, es extremadamente frustrante, ya que NUNCA hay ningún proceso que utilice el puerto que IntelliJ dice que ya está en uso. Esta opción parece haber funcionado y, con suerte, nunca más perderé el tiempo usando herramientas de diagnóstico para encontrar estos procesos inexistentes informados por IntelliJ.
user1445967
Gracias por este consejo. En mi caso, esto comenzó a suceder de repente, sin ninguna modificación conocida, ni una actualización ni la instalación de un nuevo programa. Justo después de reiniciar Windows 7 después de meses de usar IntelliJ. No sucede en ninguna de mis otras computadoras. Y ningún programa está usando ese puerto. Me gustaría encontrar una explicación.
Pere
10

Esto funciona para mí de manera consistente (me sucede de vez en cuando, cuando hago cosas como reiniciar Tomcat cuando estoy ejecutando las pruebas de integración, por ejemplo)

1) Encuentra el proceso que tiene el puerto 1099 abierto

sudo netstat -anp | grep tcp | grep 1099
cp6       0      0 :::1099                 :::*                    LISTEN      9857/java

2) mátalo

kill 9857

3) Inicie Tomcat.

Tk421
fuente
8

Tuve el mismo problema en Windows 7 e IntellijIdea 14. Maté los procesos java yendo CTRL + ALT + ESc, busqué java y lo maté. Ahora vuelva a ejecutar, la aplicación de nuevo debería estar bien. También puede hacerlo con la línea de comandos o shell (linux), pero me resultó más fácil para mí

Manam
fuente
7

He encontrado el mismo error al usar IntelliJ. Desde que comencé varias instancias de IntelliJ. Al iniciar dos instancias, se inició correctamente. Sin embargo, al iniciar otro, estaba dando el siguiente error.

unable to open debugger port (127.0.0.1:debug-port-number) java.net.socketexception interrupted function call accept failed

Básicamente, hay dos lugares donde puede verificar sus puertos relacionados con la depuración en IntelliJ

  1. Puerto JMX: puede encontrar esto ingrese la descripción de la imagen aquí
  2. En Inicio / Configuración, hay una opción de depuración, simplemente haga clic en esto. ingrese la descripción de la imagen aquí

Qué verificar : si IntelliJ arroja el error anterior, significa que el problema es cualquiera de los puertos enumerados anteriormente. Para verificar este registro de eventos abierto (está disponible en la esquina derecha hacia abajo) y verifique el mensaje exacto. El registro de eventos tendrá un mensaje como el siguiente

11:19 PM    Error running 'Tomcat-tp': Address localhost:1098 is already in use

11:19 PM    Error running 'Tomcat-tp': Unable to open debugger port (127.0.0.1:51787): java.net.SocketException "Interrupted function call: accept failed"

Solución-1 Verifique el puerto JMX del intelliJ actual que no está comenzando con el que está funcionando y verifique si los puertos JMX no están duplicados dentro de la instancia de IntelliJ o si alguno de los software que se está ejecutando en su máquina no está usando este puerto.

Solución-2 Si JMX no está duplicado, verifique su puerto de depuración, verifique todas las instancias de IntelliJ y realice los cambios.

Seguramente, el puerto JMX o Debug tiene problemas, solo use el puerto JMX y Debug únicos y funcionará.

Espero que esto ayude a alguien.

Kushwaha
fuente
1
Gracias. Siempre tengo varias instancias de IntelliJ en ejecución.
cs_pupil
¡Gracias! Aunque recibí un error sobre mi puerto del depurador, el problema era, de hecho, el puerto JMX duplicado.
Florian Wicher
5

Resolví el problema de esta manera.

  1. Intenté matar todos los procesos java.exe pero fue inútil.
  2. Luego intenté eliminar el servidor Tomcat
  3. Volví a implementar el proyecto y reinicié el proyecto y funcionó.

Consulte estos enlaces para obtener más información:

Eliminar Tomcat Eliminar Tomcat

Agregar un nuevo Tomcat Agregar un nuevo Tomcat

Abad
fuente
Resolví el problema a mi manera. ¿Por qué no compartirlo con otros?
Abad
Lo siento. Parecía que estabas haciendo una nueva pregunta. Me confundí debido al tiempo presente (" Tengo el mismo problema ")
adiga
Esta bien. Aprobó una edición pendiente en la respuesta que debería corregir todos los errores gramaticales.
adiga
3

Mientras depuraba tuve este problema: funcionó con

  1. Intenté cambiar mi puerto http de Tomcat 8082 a 8083 (en configuraciones de depuración en IntelliJ y en Tomcat-> conf-> server.xml también)
  2. Intenté cambiar el puerto JMX de 1099 a 1009.
  3. intenté cambiar el puerto de depuración en Inicio / Conexión en configuraciones de depuración
  4. mató todos los procesos de Java en TaskManager-> Procesos.
Shweta Shrivastava
fuente
3

Tenía este mensaje exacto.

La razón fue que algunos IDE (yo uso Eclipse e Intellij) no pudieron apagar el servidor tomcat. O tal vez se estrelló antes de que pudiera hacerlo.

La solución fue navegar C:\...\apache-tomcat-xxx\biny ejecutar shutdown.

Florian F
fuente
2

Tengo el mismo problema, porque el DNS de mi computadora pierde 127.0.0.1 localhost. Cuando agrego 127.0.0.1 localhost a mi archivo de host, se vuelve correcto.

vince
fuente
1
Tuve el mismo problema y esta solución también me sirvió. Alternativamente, proporcione la IP en la configuración de Intellij Debug en lugar del nombre de host "localhost".
martin_wun
2

Hay varias razones para esto.
- Puede haber un problema con el puerto depurador --- Por favor, cambie a la resolución (respondida por TM )
- Es posible que haya algún problema con intellij caché --Invalidate caché y reiniciar SOLUCIONAREMOS (respondida por Feng Smith )
- Puede haber problema con cualquier otro puerto, como JMX, AJP --- Cambie también estos números de puerto.
Quería agregar esto como comentario pero no hay suficiente representante.

RAHUL ROY
fuente
2

Lo único que me funcionó es ir al Administrador de tareas en Windows y finalizar todos los procesos de Java que se están ejecutando haciendo clic derecho -> finalizar Tarea.

buscador de la verdad
fuente
2

En la pestaña Servidor de la configuración de Tomcat en IntelliJ, cambie el puerto JMX a otro número.

Majid
fuente
Esto funcionó para mí y la respuesta aceptada no lo hizo.
Sam Orozco
2

Todas las demás soluciones lamentablemente no funcionaron. Esto es lo que funcionó para mí. Simplemente cambié el puerto del depurador a otro número de puerto.

Intelij-> preferencias-> Compilación, ejecución, implementación -> Depurador-> Servidor integrado-> puerto (cambiar valor)

ingrese la descripción de la imagen aquí

Rachita Nanda
fuente
1

Ocasionalmente sucede que cuando reinicio mi computadora, todo está bien. Quizás haya un conflicto portuario.

Reiniciar la computadora funciona porque las instancias de Java o Tomcat se eliminan durante el reinicio. También puede considerar eliminar los procesos específicos desde el Administrador de tareas

Esto también sucede si hay un problema en el archivo context.xml. En mi caso, había cambiado accidentalmente el valor de contexto.

feng smith
fuente
Probé todas las soluciones mencionadas y nada funcionó, excepto el reinicio de la computadora.
Sarah Tammam
1

Ninguno de los métodos anteriores funcionó en mi caso, es decir, cambiar el número de puerto en la configuración de ejecución, reiniciar la máquina, invalidar el caché en IntelliJ, eliminar el proceso que se muestra en netstat ( nestat -anob | findstr <port-number>y luego tskill <pid>). Lo único que finalmente ayudó fue iniciar y cerrar tomcat manualmente a través de startup.baty shutdown.bat(debe usar los .sharchivos correspondientes en linux y macOS).

k13i
fuente
1

Cambie el puerto de depuración de su servidor configurado en Intelli J.

Se arreglará.ingrese la descripción de la imagen aquí

Shahid Hussain Abbasi
fuente
Incluso después del cambio, tampoco funciona. Tengo varias instancias abiertas y pocas de ellas funcionan, no para todas.
Kushwaha
0

En mi caso, hubo un problema en server.xml para la carpeta Tomcat / conf donde tenía etiquetas de comentario adicionales debajo de otra etiqueta de comentario. Entonces creo que, dado que hubo algún problema en server.xml, no pudo iniciar Tomcat. Y además copia la carpeta tomcat de su directorio de instalación a C: \ Users \ username.IntelliJIdea2017.2 \ system \ tomcat \ Tomcat_service

Arun
fuente
1
Su respuesta no parece ayudar con la pregunta OP. ¿Qué debe hacer?
Flummox - no seas malvado SE
0

Esto sucede cuando tiene una aplicación ejecutándose en el mismo número de puerto. Una forma de hacerlo es matar el proceso con fuerza. Abra el símbolo del sistema como administrador. Ejecute el comando 'taskkill / IM "java.exe" / F'. Esto funcionó para mí en Windows. Hazme saber si esto funciona.

Umesh_Shah
fuente
0
  1. Verifique la configuración "Ejecutar" para ver qué puerto está usando ( 8081).
  2. Encuentra todos los demás procesos que usan ese puerto lsof -t -i :8081
  3. Mata los procesos en ese puerto. kill PROCESS_ID
  4. Ejecute Tomcat en modo de depuración.

En mi caso, perdí mucho tiempo cambiando el puerto del depurador, pero ese no fue el problema. Dado que tomcat no pudo ejecutarse en el puerto que elegí en la configuración Ejecutar , no pude depurar mi servicio.

recepinanc
fuente
0

En mi caso, tenía otro proyecto abierto en IntelliJ y Tomcat se ejecutaba en modo de depuración en ese proyecto. Detener esa instancia de Tomcat resolvió el problema.

Jan Peter
fuente
0

Mi suposición de que esta excepción generalmente ocurre cuando Tomcat está cerrado incorrectamente y aún mantiene los puertos. Por lo general, es suficiente eliminar cualquier proceso que escuche el puerto 1099. Para la ventana 10:

netstat -aon | find "1099"


taskkill /F /PID $processId
Igor
fuente
0

Probablemente reciba el mismo mensaje de error si no se puede encontrar el archivo standalone.xml en su carpeta independiente / de configuración. Al menos tengo el mismo error cuando utilizo WildFly 14.0.1:

Error al ejecutar WildFly 14.01.1: no se puede abrir el puerto del depurador (127.0.0.1:1233): java.net.SocketException "socket cerrado"

ShadowGames
fuente
0

Simplemente reinicie el estudio de Android antes de probar todos estos. Me enfrento a lo mismo ahora mismo y lo soluciono de esta manera.

Feliz codificación :)

happy_Coding
fuente
0

Para cualquiera que venga aquí con un mensaje similar:

Unable to open debugger port (127.0.0.1:50470):
    java.net.SocketException "Interrupted function call: accept failed"

Esto puede deberse a algo completamente independiente, es decir, no es una configuración de puerto. Si está ejecutando Tomcat, por ejemplo, es posible que tenga un archivo web.xml. Verifique su registro de eventos para ver si hay errores anteriores:

Cannot load C:\...\conf\web.xml: ParseError at [row,col]:[480,29]
            Message: The element type "param-value" must be terminated by the matching end-tag "</param-value>".

Captura de pantalla del registro de errores de IntellIj

Druckles
fuente
-1

Hay múltiples soluciones para lo mismo.

  1. O podemos cerrar el IDE (por ejemplo, IntellJ)
  2. Busque t IND00123: bin devbratanand $ lsof -i: 30303 COMMAND PID USER FD TYPE DISPOSITIVO TAMAÑO / OFF NODE NAME idea 437 devbratanand 56u IPv4 0xb2720e580a7d6483 0t0 TCP 10.17.130.41:55222->vmqp-app1.epan. local: 30303 (ESTABLECIDO) IND00123: bin devbratanand $ kill -9 437
devbrat anand
fuente
-2

intente chmod a + x /path/to/tomcat/bin/catalina.sh si lo ejecuta en intelliJ

Jianmin LIN
fuente