我正在尝试学习Play,Scala和Guice,我遇到version 2.3.7 of Play问题。当我通过更改插件启动示例时。sbt的播放版本为2.3.6,应用程序的ApplicationController正常加载。但是当在plugins.sbt中切换到2.3.7时,我只是得到一个空页。
我将Play-Guice示例(使用早期版本Play构建)与Slick数据访问示例相结合。
这是我的Application.scala播放控制器代码,没有包和导入:
@Singleton
class Application @Inject() (textGenerator: TextGenerator) extends Controller {
def index = Action {
Ok(views.html.index(textGenerator.welcomeText))
}
}
object Application extends Controller {
def index = Action {
Ok(views.html.index("Your new application is ready.", "Home"))
}
}
这是我的Global.scala(减去导入):
object Global extends GlobalSettings {
/**
* Bind types such that whenever TextGenerator is required, an instance of WelcomeTextGenerator will be used.
*/
val injector = Guice.createInjector(new AbstractModule {
protected def configure() {
bind(classOf[TextGenerator]).to(classOf[WelcomeTextGenerator])
}
})
/**
* Controllers must be resolved through the application context. There is a special method of GlobalSettings
* that we can override to resolve a given controller. This resolution is required by the Play router.
*/
override def getControllerInstance[A](controllerClass: Class[A]): A = injector.getInstance(controllerClass)
}
任何人都可以看到为什么一个版本的Play会起作用,而不是另一个版本?
也欢迎任何信息请求或有根据的猜测!
注意:到目前为止,没有明显的错误消息,我在两个版本之间看到的唯一区别是一个加载页面而另一个没有。没有已知的已记录错误,错误消息或代码差异(当然,除版本开关外)。
Build.scala(减去进口):
object ApplicationBuild extends Build {
val appName = "root"
val appVersion = "1.0-SNAPSHOT"
val appDependencies = Seq(
"com.google.inject" % "guice" % "3.0",
"javax.inject" % "javax.inject" % "1",
"org.mockito" % "mockito-core" % "1.9.5" % "test"
)
val main = Project(appName, file(".")).enablePlugins(play.PlayScala).settings(
version := appVersion,
libraryDependencies ++= appDependencies
)
}
答案 0 :(得分:0)
后来我回去试图切换回2.3.7,正如@akkie建议的那样,该网站能够正常启动并运行。
对于发生了哪些变化的反击似乎有两种可能导致网站失败的可能性。
无论
请记住,这些只是猜测,所以我可能错过了一些有助于解决问题的其他变化。尽管如此,我认为我或其他人可能会通过阅读我的笔记来帮助他们以后再开始工作。