我最近更新了2.4.1(damiya)版本,并且始终能够通过intellij进入scala控制台并在终端窗口中输入activator console
。然后我会通过输入以下代码行来启动一个新的静态应用程序:
new play.core.StaticApplication(new java.io.File("."))
如play website itself所述,以及关于SO的类似旧问题的一些答案。
然而,我无法让它在Play 2.4.1上运行,错误返回为:
<console>:8: error: type StaticApplication is not a member of package play.core
new play.core.StaticApplication(new java.io.File("."))
^ `
任何关于如何解决这个问题的建议都会非常感激,控制台过去对我非常有用,而且对调试来说非常重要。
答案 0 :(得分:10)
理查德在此{{3}}中解释道:
将服务器启动代码重构为prod,dev,test modes
此更改使启动应用程序的生命周期变得更多 更加清晰。
- 不再需要针对Netty和Akka HTTP的单独ServerStart实现,因为ServerProvider配置始终从中加载 配置文件。而是根据模式分离出代码 服务器运行,因为行为可能因模式而异。现在 我们有一个ProdServerStart,DevServerStart和一个DocServerStart。
- 对于每种模式,将ApplicationProvider代码移动到与新服务器启动代码相同的文件中。移动代码以启动应用程序 从ApplicationProvider构造函数出来并进入服务器
开始代码。 ApplicationProviders仍然实现'get'方法
获取当前的应用程序。- 删除TestApplication和StaticApplication,因为它们执行相同的操作。而是为“静态”应用程序提供辅助工具 不需要重装。
你可以做同样的事情:
play.core.server.ProdServerStart.main(Array())
答案 1 :(得分:3)
不幸的是,bjfletcher的回答只指出了我正确的道路 - 运行ProdServerStart
实际上并没有让我成为一个运行环境(实际上恰恰相反 -
scala> play.core.server.ProdServerStart.main(Array.empty)
Oops, cannot start the server.
Configuration error: Configuration error[application: application.conf: java.io.IOException: resource not found on classpath: application.conf, application.json: java.io.IOException: resource not found on classpath: application.json, application.properties: java.io
.IOException: resource not found on classpath: application.properties]
at play.api.Configuration$.configError(Configuration.scala:178)
at play.api.Configuration$.load(Configuration.scala:103)
at play.api.Configuration$.load(Configuration.scala:133)
at play.api.ApplicationLoader$.createContext(ApplicationLoader.scala:91)
at play.core.server.ProdServerStart$.start(ProdServerStart.scala:50)
at play.core.server.ProdServerStart$.main(ProdServerStart.scala:27)
at $line21.$read$$iw$$iw$.<init>(<console>:8)
at $line21.$read$$iw$$iw$.<clinit>(<console>)
at $line21.$eval$.$print$lzycompute(<console>:7)
at $line21.$eval$.$print(<console>:6)
at $line21.$eval.$print(<console>)
...
...可能是由于我自己对JVM缺乏经验。)。
幸运的是,Launch the Interactive Console的2.5.x版本提供了可运行的代码!
我们之前的更详细的版本现在是:
import play.api._
val env = Environment(new java.io.File("."), this.getClass.getClassLoader, Mode.Dev)
val context = ApplicationLoader.createContext(env)
val loader = ApplicationLoader(context)
val app = loader.load(context)
Play.start(app)
import Play.current
可以保存为:script
或其他内容。