在config.file中显式设置Global对象时,Typesafe Activator java.lang.ClassNotFoundException

时间:2013-11-12 10:25:45

标签: playframework config global classnotfoundexception typesafe-activator

在Scala Play2应用程序中,我想为不同的环境定义单独的设置。 我的方法是使用不同的.conf文件,并以-Dconfig.file = ...。

开头

调用

时工作正常
play -Dconfig.file=conf/application.conf

play -Dconfig.file=conf/test.conf

但是在打电话时

activator -Dconfig.file=conf/application.conf ui

我得到了

  

java.lang.ClassNotFoundException:Global $

假设-Dconfig.file对Activator的工作方式相同,我错了吗? 什么是使用Activator获得我想要的东西的正确方法?

application.conf:

...

application.global=Global

...

test.conf:

...

application.global=GlobalForTest

...

Global.scala:

object Global extends GlobalSettings {

  override def onStart(app: Application) {
    Logger.info("Application has started")
    AppContext.databaseDetails = "default database details"
  }

}

GlobalForTest.scala:

object GlobalForTest extends GlobalSettings {

  override def onStart(app: Application) {
    Logger.info("Application has started in test mode")
    AppContext.databaseDetails = "test database details"
  }

}

1 个答案:

答案 0 :(得分:1)

你可以在激活器上打开一个错误吗?看起来config.file没有被传递给我们的forked sbt进程。我们需要提供一些机制来控制将哪些sys变量传递给forked sbt,或以某种方式添加/控制它们。现在,这是一个UI限制。

但是,./activator test./activator run应该以与播放相同的方式运作。