【发布时间】:2013-11-18 21:53:26
【问题描述】:
从 Play Framework 2.1 转换到 2.2 (Scala) 我正在重组一些代码,并发现一些代码行完全冻结了 SBT 构建,直到由于 java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded 而导致进程被终止。 Eclipse(与 Juno 和 Kepler 一起尝试过,但我怀疑它与此有关)也冻结了,它甚至不再加载工作台了。
所以,这里是代码。我很想知道是什么让编译器死机,而不仅仅是在这里给出错误。
def foo = Action { implicit request =>
someForm.bindFromRequest.fold(
formWithErrors => Ok,
form => Async { Future.successful(Ok) }
)
}
我已经解决了这个问题,但我很好奇为什么这会冻结一切。我在运行 java (1.7.0_40) 的 Mac 上。
更新:另外,我使用的是 Scala 2.10.2。我的一个同事可以在他的 PC 上编译它,但在 Async 上会出现弃用警告。
【问题讨论】:
-
我没有解释,但我在迁移到 2.2 时遇到了同样的问题,编译停止并最终出现内存不足异常,但在将其更改为 Action.async 后,应用程序中的一切再次编译就好了。
-
我也是这样做的,但只是为了对每一个微小的技术细节感到好奇,我很想知道是什么让构建挂起。 Scala 编译器中的错误?
-
你能提交错误报告吗?我们还需要更多信息来解决这个问题,例如线程转储。
-
对于那些阅读的人,可以尝试的一件事是升级到最新的 Scala 版本(当前为 2.10.4)。见:scala-sbt.org/0.13.2/docs/Howto/scala.html
-
我会尽快重现此问题,并且很乐意提交错误报告。
标签: scala playframework sbt playframework-2.2