播放2.4控制台无法正常工作

时间:2015-07-04 18:58:50

标签: scala intellij-idea playframework

我最近更新了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("."))
                        ^ `

任何关于如何解决这个问题的建议都会非常感激,控制台过去对我非常有用,而且对调试来说非常重要。

2 个答案:

答案 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或其他内容。