Macos OSX播放框架自动重新加载

Macos OSX播放框架自动重新加载,macos,playframework,docker,boot2docker,Macos,Playframework,Docker,Boot2docker,我已经在互联网上搜索了好几个小时了,有很多“有用”的建议……这些建议只会带来问题 这就是我,几乎完全正确: 我正在运行该剧的最新版本(我想,我不知道如何检查,但已下载

我已经在互联网上搜索了好几个小时了,有很多“有用”的建议……这些建议只会带来问题

这就是我,几乎完全正确:

我正在运行该剧的最新版本(我想,我不知道如何检查,但已下载<一周前)!使用Java 8构建的ubuntu docker容器内的框架,使用以下dockerfile构建:

FROM ubuntu:latest
MAINTAINER [REDACTED]
RUN sudo apt-get update
RUN sudo apt-get -y install software-properties-common
RUN sudo apt-add-repository ppa:webupd8team/java
RUN sudo apt-get update
RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections
RUN sudo apt-get -y install oracle-java8-installer
RUN java -version
在互联网上显示相同或相似的问题,或多或少得出相同的结论。我正在按如下方式启动我的play应用程序:

我不会重复上面的链接,基本上是相同的情况。(检测到文件更改,它显示了一个编译,尽管网页没有反映更改。)此外,我正在通过反编译生成的.class文件来验证正确的编译,它显示了正确的代码

现在,当我说这些神奇的话时:将以下行添加到我的build.sbt文件中

PlayKeys.playWatchService := play.sbtplugin.run.PlayWatchService.sbt(pollInterval.value)
我得到了一个整体构建.sbt:

name := """cms-work"""

version := "1.0-SNAPSHOT"

retrieveManaged := true

lazy val root = (project in file(".")).enablePlugins(PlayJava)

scalaVersion := "2.11.6"

libraryDependencies ++= Seq(
  javaJdbc,
  cache,
  javaWs
)

// Play provides two styles of routers, one expects its actions to be injected, the
// other, legacy style, accesses its actions statically.
routesGenerator := InjectedRoutesGenerator

// Polling for auto-reload, because networked filesystem.
PlayKeys.playWatchService := play.sbtplugin.run.PlayWatchService.sbt(pollInterval.value)
在我的项目目录中运行
/activator
,会导致它重新评估我的生成文件并生成以下内容:

/root/cms-work/build.sbt:23: error: value playWatchService is not a member of object play.sbt.Play.autoImport.PlayKeys
PlayKeys.playWatchService := play.sbtplugin.run.PlayWatchService.sbt(pollInterval.value)
         ^
[error] Type error in expression
显而易见,一刀切的解决方案已不再适用。从那以后我就一直被难住了。我发现从2.3.x以来,绝对没有任何会使此命令无效的更改通知。相反,我看到的是提到“2.3.2之后的作品”,我就是

附言:


有人能解释一下链接文章末尾描述的奇怪的Ctrl-D行为吗。我也经历了同样的情况,考虑到Ctrl-D应该退出的事实,似乎很奇怪…

好吧,更多的互联网搜索,我终于崩溃了,翻阅了这部剧!Framework github找到他们的test build.sbt,它恰好使用了新选项

显然,在《移民指南》的深处,人们注意到了这一点。(我花了一段时间才找到它。)

显然,我的错误在于假设2.3.2+中包含了2.4.0,而没有检查隐藏良好的(以我的拙见)文档。对于遇到类似情况而跌跌撞撞的其他人,请不要再看下去:

PlayKeys.fileWatchService := play.sbtplugin.run.PlayWatchService.sbt(pollInterval.value)
这是播放轮询的新语法,从2.4.0开始。如果这会导致另一个错误,请检查迁移报告,直到您正在使用的版本,以查看他们是否再次更改了它


我只是想知道,我是不是疯了,竟然期望有某种
这是不推荐的
消息被吐出来,而不是盲目地谴责我所做的一切?这似乎是对未来有益的补充

error: value playWatchService is not a member of object play.sbt.Play.autoImport.PlayKeys

error: object sbtplugin is not a member of package play
在Playframework 2.4.X中,SBT设置键
playWatchService
已重命名为
fileWatchService

相应的类也发生了变化。要将
FileWatchService
设置为每两秒轮询一次,请如下使用:

scala PlayKeys.fileWatchService := play.runsupport.FileWatchService.sbt(2000)
摘自: