Search code examples
javaeclipsemacosplayframeworkjnotify

Play Framework 2.1 Java/Eclipse: Auto-Reload not working


The Problem/s:

  • Views are being compiled but hitting refresh in a browser won't show the changes without restarting the server manually.
  • Changes to controllers compile automatically using ~run but only a manual server restart will update the content on the server.
  • Changes to routes under conf are only shown after manually restarting the server.

Background:

  • running on OSX 10.8.3
  • using Eclipse Juno 4.2.2
  • Server is launched using play ~run
  • Only restarting the server will show changes to views, controllers, routes

To be able to make changes without having to restart the server each time I tried (without success):

  • in the console: clean -> eclipse -> ~run
  • in the console: clean -> compile -> ~run
  • shutdown/restart the computer
  • Tick Refresh using native hooks or polling -> remove classes_managed from Referenced Libraries and add it manually

Questions:

  • How can the Auto-Reload functionality be restored?
  • How can this problem be solved on IDEs besides Eclipse?

Further information:

Both of them point to JNotify as the cause for auto-reloading not to work. One of the answers (not enough rep to write a comment) mentions how one could "hack Play framework's sbt plugin to make the PlayReloader trait behave as if JNotify wasn't available." How could one achieve this?


Solution

  • The following got Play's auto-reload to working with Eclipse:

    1. In Eclipse Preferences go to GeneralWorkspace. Uncheck Build automatically.
    2. Restart OS X.

    For whatever reason, I had to restart OS X to get akim's suggestion to take hold.