Macos OSX播放框架自动重新加载
我已经在互联网上搜索了好几个小时了,有很多“有用”的建议……这些建议只会带来问题 这就是我,几乎完全正确: 我正在运行该剧的最新版本(我想,我不知道如何检查,但已下载<一周前)!使用Java 8构建的ubuntu docker容器内的框架,使用以下dockerfile构建:Macos OSX播放框架自动重新加载,macos,playframework,docker,boot2docker,Macos,Playframework,Docker,Boot2docker,我已经在互联网上搜索了好几个小时了,有很多“有用”的建议……这些建议只会带来问题 这就是我,几乎完全正确: 我正在运行该剧的最新版本(我想,我不知道如何检查,但已下载
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)
摘自: