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
underconf
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
-> removeclasses_managed
fromReferenced 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?
The following got Play's auto-reload to working with Eclipse:
- In Eclipse Preferences go to
General
→Workspace
. UncheckBuild automatically
. - Restart OS X.
For whatever reason, I had to restart OS X to get akim's suggestion to take hold.
I got around this problem by changing the project configuration in Eclipse. I unchecked the "Allow output folders for source folders" option, which means that Eclipse will compile classes to the "bin" folder. This prevents the Eclipse compilation from interfering with the Play compilation. The only downside is that you have to remember to redo it if you ever do play eclipse
again.
Following akim's suggestion, disabling Build automatically
under General\Workspace
in the Eclipse Preferences solves the problem and re-enables Play!'s auto-reload functionality in all of the above problem cases.
来源:https://stackoverflow.com/questions/15709325/play-framework-2-1-java-eclipse-auto-reload-not-working