Tengo una aplicación java que se ejecuta en una máquina linux. Ejecuto la aplicación java usando lo siguiente:
java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n
He abierto el puerto 4000 para TCP en esta máquina Linux. Yo uso eclipse de la máquina de Windows XP y tratar de conectarse a esta aplicación. He abierto el puerto en Windows también.
Ambas máquinas están en la LAN pero parece que no puedo conectar el depurador a la aplicación Java. ¿Qué estoy haciendo mal?
Edición: Me he dado cuenta de que algunas personas están cortando y pegando la invocación aquí. La respuesta que di originalmente era relevante sólo para el OP. Aquí's un estilo de invocación más moderno (incluyendo el uso del puerto más convencional de 8000):
java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n <other arguments>
La respuesta original sigue.
Pruebe esto:
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp
Dos puntos aquí:
runjdwp
.Para JDK 1.3 o anterior :
-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006
Para JDK 1.4
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006
Para JDK más recientes :
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6006
Por favor, cambie el número de puerto en función de sus necesidades.
De java technotes A partir de la versión 5.0 la opción -agentlib:jdwp se utiliza para cargar y especificar
opciones al agente JDWP. Para las versiones anteriores a la 5.0, las opciones -Xdebug y -Xrunjdwp (la implementación de la versión 5.0 también soporta las opciones -Xdebug y -Xrunjdwp, pero es preferible la opción -agentlib:jdwp, ya que el agente JDWP de la versión 5.0 utiliza la interfaz JVM TI para la VM en lugar de la antigua interfaz JVMDI)
Una cosa más a tener en cuenta, de la documentación de la interfaz JVM Tool:
JVM TI se introdujo en el JDK 5.0. JVM TI reemplaza a la interfaz del perfilador de la máquina virtual de Java (JVMPI) y a la interfaz de depuración de la máquina virtual de Java (JVMDI) que, a partir de JDK 6, ya no se proporcionan.
Pasos:
Ver Guía paso a paso de la depuración remota de Java para más detalles.