在浏览器中点击应用程序时播放框架挂起



我在Play中使用activator run运行一个应用程序,可能五次中有三次,它会挂起,当我转到http://localhost:9000/时,它会永远坐在那里旋转。

我也看到了很多promise timed out错误。

我应该在哪里查找这个问题?

我用logLevel := Level.Debug登录,但我没有发现任何问题。当应用程序旋转时,我看不到任何日志记录。


如果我只是让它静置并旋转很长一段时间(~5分钟),它最终会出现以下错误:

[info] play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[PrivilegedActionException: null]]
[info]  at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:265) ~[play_2.11-2.4.3.jar:2.4.3]
[info]  at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:191) ~[play_2.11-2.4.3.jar:2.4.3]
[info]  at play.core.server.Server$class.logExceptionAndGetResult$1(Server.scala:50) [play-server_2.11-2.4.3.jar:2.4.3]
[info]  at play.core.server.Server$$anonfun$getHandlerFor$4.apply(Server.scala:59) [play-server_2.11-2.4.3.jar:2.4.3]
[info]  at play.core.server.Server$$anonfun$getHandlerFor$4.apply(Server.scala:57) [play-server_2.11-2.4.3.jar:2.4.3]
[info]  at scala.util.Either$RightProjection.flatMap(Either.scala:522) [scala-library.jar:na]
[info]  at play.core.server.Server$class.getHandlerFor(Server.scala:57) [play-server_2.11-2.4.3.jar:2.4.3]
[info]  at play.core.server.NettyServer.getHandlerFor(NettyServer.scala:33) [play-netty-server_2.11-2.4.3.jar:2.4.3]
[info]  at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$8.apply(PlayDefaultUpstreamHandler.scala:139) [play-netty-server_2.11-2.4.3.jar:2.4.3]
[info]  at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$8.apply(PlayDefaultUpstreamHandler.scala:139) [play-netty-server_2.11-2.4.3.jar:2.4.3]
[info] Caused by: java.security.PrivilegedActionException: null
[info]  at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_20]
[info]  at play.runsupport.Reloader$.play$runsupport$Reloader$$withReloaderContextClassLoader(Reloader.scala:39) ~[na:na]
[info]  at play.runsupport.Reloader.reload(Reloader.scala:321) ~[na:na]
[info]  at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:113) ~[play-server_2.11-2.4.3.jar:2.4.3]
[info]  at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:111) ~[play-server_2.11-2.4.3.jar:2.4.3]
[info]  at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) ~[scala-library.jar:na]
[info]  at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) ~[scala-library.jar:na]
[info]  at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1423) ~[na:1.8.0_20]
[info]  at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[na:1.8.0_20]
[info]  at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:902) ~[na:1.8.0_20]
[info] Caused by: java.util.concurrent.TimeoutException: Futures timed out after [300000 milliseconds]
[info]  at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219) ~[scala-library.jar:na]
[info]  at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223) ~[scala-library.jar:na]
[info]  at scala.concurrent.Await$$anonfun$result$1.apply(package.scala:190) ~[scala-library.jar:na]
[info]  at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53) ~[scala-library.jar:na]
[info]  at scala.concurrent.Await$.result(package.scala:190) ~[scala-library.jar:na]
[info]  at play.forkrun.ForkRun$$anonfun$askForReload$1.apply(ForkRun.scala:127) ~[na:na]
[info]  at play.forkrun.ForkRun$$anonfun$askForReload$1.apply(ForkRun.scala:125) ~[na:na]
[info]  at play.runsupport.Reloader$$anonfun$reload$1.apply(Reloader.scala:323) ~[na:na]
[info]  at play.runsupport.Reloader$$anon$3.run(Reloader.scala:43) ~[na:na]
[info]  at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_20]

我应该提到的是,这是一个非常简单的应用程序。到目前为止,它除了呈现一些HTML之外什么也没做。


这太糟糕了,因为框架中似乎有很多好东西,但它只是,而且非常不可靠。

fork in run := true总是在从Activators UI启动应用程序时添加的(用于生成进程),因此停止使用给定应用程序的UI(可能在IDE中添加启动配置)或始终记得清除/注释/设置为false。

最新更新