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

2019-04-09 07:32发布

问题:

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:

  • Playframework reload not working Mac OSX
  • Auto-reloading with Play framework on a network filesystem

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?

回答1:

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.



回答2:

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.



回答3:

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.