我試着在app/Global.scala中創建一個Global對象來運行Akka調度器,就像其他一些SO帖子說的一樣。Play2 Scala - 全局不能投入播放。GlobalSettings
我的代碼幾乎是複製了全局對象教程/粘貼,但在啓動時,我得到以下錯誤:
Oops, cannot start the server.
PlayException: Cannot init the Global object [Global cannot be cast to play.GlobalSettings]
at play.api.PlayException$.apply(Exceptions.scala:122)
at play.api.Application$$anonfun$3.apply(Application.scala:71)
at play.api.Application$$anonfun$3.apply(Application.scala:67)
at play.utils.Threads$.withContextClassLoader(Threads.scala:17)
at play.api.Application.<init>(Application.scala:66)
at play.core.StaticApplication.<init>(ApplicationProvider.scala:49)
at play.core.server.NettyServer$.createServer(NettyServer.scala:132)
at play.core.server.NettyServer$$anonfun$main$5.apply(NettyServer.scala:153)
at play.core.server.NettyServer$$anonfun$main$5.apply(NettyServer.scala:152)
at scala.Option.map(Option.scala:133)
at play.core.server.NettyServer$.main(NettyServer.scala:152)
at play.core.server.NettyServer.main(NettyServer.scala)
Caused by: java.lang.ClassCastException: Global cannot be cast to play.GlobalSettings
at play.api.Application.liftedTree1$1(Application.scala:44)
at play.api.Application.play$api$Application$$javaGlobal(Application.scala:43)
at play.api.Application$$anonfun$3.apply(Application.scala:68)
... 10 more
這裏是我的代碼:
import play.api._
import play.api.Play.current
import akka.util.duration._
import play.api.libs.concurrent._
/**
* @author Sebastien Lorber (<i>[email protected]</i>)
* Date: 21/11/12 - Time: 21:55
*/
class Global extends GlobalSettings {
override def onStart(app: Application) {
Logger.info("Application has started")
startElasticSearchIndexationScheduling
}
override def onStop(app: Application) {
Logger.info("Application shutdown...")
}
def startElasticSearchIndexationScheduling = {
Akka.system.scheduler.schedule(5 seconds, 15 seconds) {
Logger.info("Doing ElasticSearch reindexation (TODO: just testing scheduler")
}
}
}
沒什麼特別喜歡你看...
順便說一下,我不明白爲什麼經常有2個不同的包對同名對象play.GlobalSettings
/play.api.GlobalSettings
等一個obj ect似乎是用於Java的,另一個用於Scala,但是包名稱並不是很明顯。我正在使用Scala和一個導入「play.api.GlobalSettings」的Scala全局對象,那麼爲什麼它需要嘗試投射到play.GlobalSettings
,這看起來更加面向Java(我試圖擴展這個並且它也不起作用,並且它不是教程說什麼)
感謝
arf謝謝你的發現,我沒有注意到我寫了類而不是對象:) –
它碰巧是我們最好的;-) –
謝謝兄弟.... – saman