starter - Debug Playframework en Eclipse
play framework tutorial español (7)
Acabo de mudarme de Netbeans a Eclipse. En Netbeans, puedo depurar las aplicaciones de Playframework de fábrica. Sin embargo, en Eclipse, parece difícil configurar esto para depurar una aplicación web (una aplicación Playframework en específico).
Como en Play! documentación,
El iniciador principal solo se puede usar con el comando Ejecutar como eclipse. A continuación, puede usar el "Conectar el iniciador de JPDA" utilizando "Depurar como" para iniciar una sesión de depuración en cualquier momento. La detención de la sesión de depuración no detendrá el servidor.
Sin embargo, no puedo ver "Connect JPDA launcher" en "Debug As" (estoy usando Eclipse Classic 3.7.0). He buscado sobre JPDA (soy nuevo en Java y no sé nada sobre "main launcher" y JPDA, luego configuro Remote Debug como se indica en http://javarevisited.blogspot.com/2011/02/how-to-setup-remote-debugging-in.html Pero está devolviendo un error:
No se pudo conectar a la máquina virtual remota. Conexión denegada. Conexión rechazada: conectar
He buscado y encontrado algunas sugerencias como:
1.) editar catalina.bat y agregar las líneas: establecer JPDA_TRANSPORT = dt_socket ... establecer JPDA_ADDRESS = 8000 Y 2.) Editar la llamada a startup.bat "% EJECUTABLE%" jpda start% CMD_LINE_ARGS%
En realidad, no entiendo esto claramente y creo que es para configurar Tomcat. Sin embargo, estoy usando Play! servidor predeterminado, verificó el archivo application.conf y está seguro de que está escuchando el puerto 9000 y 8000 para JPDA.
Por supuesto, comencé la aplicación Play antes de la depuración, puedo acceder a la aplicación a través del puerto 9000 normalmente. Estoy usando Win 7 sin derechos de administrador.
¿Tienes una guía detallada sobre la depuración de Play! en Eclipse?
A partir de Play 2.0, la carpeta de eclipse
y los lanzadores ya no se generan cuando ejecuta play eclipsify
. Después de ejecutar play eclipsify
, puede depurar su proyecto en Eclipse de la siguiente manera:
- En una consola fuera de eclipse, ejecute
play debug run
. - En Eclipse, haga clic derecho en su proyecto, luego elija
Debug As -> Debug Configurations...
- Haga clic con el botón derecho en
Remote Java Application
y luego haga clic enNew
. - El host ya debería estar configurado en
localhost
. Establezca el puerto en9999
(el puerto predeterminado utilizado por el comandoplay debug run
). - Haga clic en
Apply
para guardar, luego enDebug
para conectarse a su instancia de Play en ejecución.
A partir de Play 2.1.2, recibí el error de ''dirección en uso'' cuando ejecuté la ejecución de depuración de reproducción.
La solución fue editar play.bat en el directorio play-2.1.2 y cambiar estas dos líneas:
:setDebug
set JPDA_PORT=9999
a
:setDebug
set JPDA_PORT=8551
Luego, en Eclipse, seleccione Configuraciones de depuración, busque "Aplicación Java remota", haga Nuevo. Luego configure el puerto en 8551. Ahora puede comenzar a jugar usando
play debug run
Y luego en Eclipse, inicie la depuración usando la configuración de depuración que creó.
Con el activador, necesitará el activator -jvm-debug <port number> ~run
Si ejecuta "play eclipsify" en la carpeta del proyecto, creará dos configuraciones de ejecución. Al mirar los detalles de la configuración de ejecución, debe verificar si la siguiente línea (o algo similar) está en los "argumentos de VM":
-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
-Dplay.debug=yes
-Dplay.id=test -Dapplication.path="${project_loc:NMKServer}"
-Djava.endorsed.dirs="c:/Java/play-1.2.2/framework/endorsed"
-javaagent:"c:/Java/play-1.2.2/framework/play-1.2.2.jar"
Aquí puede configurar el puerto de depuración. Con esta configuración, puedo adjuntarme al proceso utilizando las instrucciones que tiene.
Supongo que la mayoría de ustedes está ejecutando el marco de juego con Typesafe Activator. Si lo haces, esto puede ayudarte,
activador -jvm-debug ~ run
Me gusta: activador -jvm-debug 9999 ~ run
(Luego, iniciará el depurador en el puerto 9999 junto con la aplicación que se ejecuta en el puerto 9000).
- Ahora ve a Eclipse y haz clic derecho en el nombre del proyecto que deseas depurar y selecciona Depurar como -> Configuración de depuración. -> (seleccionar) Aplicación Java remota -> nueva (arriba a la izquierda un ícono con un pequeño signo más) -> conectar especificar puerto 9999 y depuración.
Juega 2.1-RC2: ¡ ejecuta el juego! aplicación que está sincronizada con Eclipse
Para que el proyecto sea compatible con Eclipse, obtenga la carpeta del proyecto y luego ejecute el comando "> play eclipse". Ahora puede agregarlo como un eclipse de formulario de proyecto existente.
Luego, para ejecutarlo primero debe ejecutar play en la carpeta del proyecto, es decir, comando "play"
Esto activará el servidor de reproducción e identificará la aplicación en el proyecto, es decir [appname] $; ahora solo tiene que dar el comando "ejecutar" para ver su aplicación ejecutándose en el host local: 9000 o cualquier configuración de puerto que haya especificado.
Modo de depuración: para ejecutar esto de manera similar, primero debe dar el comando "play" y luego [appname] $ "play debug run". Esto usará de manera predeterminada el puerto 9999, así que cuando vaya a localhost: 9000 en su navegador y en su archivo eclipse -> Depurar como -> Configuración de depuración. -> Nueva aplicación Java remota -> conectar especificar el puerto 9999 y depurar
En primer lugar, ha creado los archivos de configuración para Eclipse con el comando play eclipsify YourProject
, ¿no? (De lo contrario, consulte la documentación de Play framework para obtener más información).
Después de eso, debes tener una carpeta llamada eclipse
en tu proyecto. En él, debería ver los comandos Connect JDPA to YourProject.launch
, YourProject.launch
y Test YourProject.launch
.
Haga clic con el botón derecho en YourProject.launch
y seleccione Run As --> YourProject
en el menú emergente. Eso comenzará su aplicación. Cuando la aplicación se está ejecutando, haga clic con el botón derecho en Connect JDPA to YourProject.launch
y elija Debug As --> Connect JDPA to YourProject.launch
en el menú emergente. Eso iniciará una sesión de depuración en su aplicación.