Playframework 在网络文件系统上使用Play framework自动重新加载

Playframework 在网络文件系统上使用Play framework自动重新加载,playframework,playframework-2.0,playframework-2.1,Playframework,Playframework 2.0,Playframework 2.1,我正在VirtualBox VM上运行Play framework应用程序,项目源代码位于主机系统共享的目录中。框架的自动重新加载功能不起作用 这可能是由于JNotify无法检测到源文件的更改,因为文件系统不是本地的。NFS和vboxsf都面临相同的问题 这有什么办法吗 Play框架有一个内置的回退机制,用于检测JNotify不可用的系统上的更改。是否有可能以某种方式强制选择回退机制?(性能命中是可以接受的。) 还有其他解决方案吗?回答我自己的问题:似乎没有一种简单的方法来实现这一点,而且在不久

我正在VirtualBox VM上运行Play framework应用程序,项目源代码位于主机系统共享的目录中。框架的自动重新加载功能不起作用

这可能是由于JNotify无法检测到源文件的更改,因为文件系统不是本地的。NFS和vboxsf都面临相同的问题

这有什么办法吗

Play框架有一个内置的回退机制,用于检测JNotify不可用的系统上的更改。是否有可能以某种方式强制选择回退机制?(性能命中是可以接受的。)


还有其他解决方案吗?

回答我自己的问题:似乎没有一种简单的方法来实现这一点,而且在不久的将来,网络文件系统中似乎也不会提供这种功能

对Play框架的sbt插件进行黑客攻击并使PlayReloader特性表现得好像JNotify不可用,这相当简单,但至少可以说是一次肮脏的黑客攻击


最好的解决方案似乎是将Play应用程序从VM上移开并在主机上运行,即使完全自动配置的开发环境的一些好处已经丧失。

我在这里遇到了同样的情况。切换到Play/SBT控制台中的
~run
(而不是
run
),绕过JNotify(根据Josh Suereth的说法),似乎为我解决了问题。

根据James Roper的说法,如果您使用的是Play 2.3.2或更高版本,您可以在build.SBT中添加以下内容:

PlayKeys.playWatchService := play.sbtplugin.run.PlayWatchService.sbt(pollInterval.value)

以下是James Roper对这个问题的完整回答。

是的,SBT出于几个原因避免通知,但这是其中之一。工作起来很有魅力。非常感谢!:)2.1.3是否仍然有效?不太清楚你们是怎么做到的。