3

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

这(可能)是由于 JNotify 无法检测到源文件的更改引起的,因为文件系统不是本地的。NFS 和 vboxsf 都存在同样的问题。

有没有办法解决?

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

还有其他解决方案吗?

4

3 回答 3

3

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

于 2013-02-13T20:03:16.467 回答
1

回答我自己的问题:似乎没有一种直接的方法可以实现这一点,而且看起来这种功能在不久的将来不会在网络文件系统中可用。

破解 Play 框架的 sbt 插件并使 PlayReloader trait 表现得好像 JNotify 不可用是相当简单的,但至少可以说这是一个肮脏的破解。

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

于 2013-01-13T22:49:43.350 回答
1

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

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

这是James Roper 对此问题的完整回应的链接

于 2014-08-04T17:23:27.313 回答