Play Framework 2.1 Java/Eclipse: Auto-Reload no funciona
macos playframework (3)
Siguiendo la sugerencia de Akim, deshabilitar la Build automatically
en General/Workspace
en las Preferencias de Eclipse resuelve el problema y vuelve a habilitar la funcionalidad de recarga automática de Play! En todos los casos de problemas anteriores.
Los problemas:
- Las vistas se están compilando, pero al actualizar en un navegador no se mostrarán los cambios sin reiniciar el servidor manualmente.
- Los cambios en los controladores se compilan automáticamente con
~run
pero solo un reinicio manual del servidor actualizará el contenido en el servidor. - Los cambios en las
routes
bajoconf
solo se muestran después de reiniciar manualmente el servidor.
Fondo:
- ejecutándose en OSX 10.8.3
- usando Eclipse Juno 4.2.2
- El servidor se inicia con
play ~run
- Solo al reiniciar el servidor se mostrarán cambios en las vistas, los controladores y las rutas
Para poder hacer cambios sin tener que reiniciar el servidor cada vez que lo intenté (sin éxito):
- en la consola:
clean
->eclipse
->~run
- en la consola:
clean
->compile
->~run
- apagar / reiniciar la computadora
- Marque
Refresh using native hooks or polling
-> eliminarclasses_managed
deReferenced Libraries
y agregarlas manualmente
Preguntas:
- ¿Cómo se puede restaurar la funcionalidad de Auto-Reload?
- ¿Cómo se puede resolver este problema en IDEs además de Eclipse?
Más información:
- Playframework reload not working Mac OSX
- Recarga automática con Play framework en un sistema de archivos de red
Ambos señalan que JNotify es la causa de que la recarga automática no funcione. Una de las respuestas (no es suficiente representante para escribir un comentario) menciona cómo se podría "piratear el plugin sbt de Play Framework para que el rasgo de PlayReloader se comporte como si JNotify no estuviera disponible". ¿Cómo podría uno lograr esto?
A continuación, se activó la recarga automática de Play para trabajar con Eclipse:
- En Preferencias de Eclipse, vaya a
General
→Workspace
. DesmarqueBuild automatically
. - Reinicie OS X.
Por alguna razón, tuve que reiniciar OS X para obtener la sugerencia de Akim de tomar control.
Solucioné este problema cambiando la configuración del proyecto en Eclipse. Desactivé la opción "Permitir carpetas de salida para carpetas de origen", lo que significa que Eclipse compilará clases en la carpeta "bin". Esto evita que la compilación Eclipse interfiera con la compilación Play. El único inconveniente es que debes recordar rehacerlo si alguna vez vuelves a play eclipse
.