I use vagrant and virtual box to create my dev environment. When I stored my play app on shared folder, the auto-reload is not working. If I moved my play app out of the shared folder, then auto-reload is working fine.
This is expected - Play uses OS level hooks to watch for file changes, but vagrant/virtual box/network/shared filesystems generally don't implement these hooks, they simply ignore them, meaning it fails silently. There's nothing Play can do about this.
That said, if you're using Play 2.3.2 or later, there is something you can do, you can switch to our polling implementation. This will use a lot more CPU since it has to scan your whole source directory structure every 500ms to detect changes, but that's the only option available for detecting changes in your setup.
To configure this, add the following to your build.sbt:
PlayKeys.playWatchService := play.sbtplugin.run.PlayWatchService.sbt(pollInterval.value)