【发布时间】:2015-04-20 12:23:08
【问题描述】:
我创建了一个工作应用程序,但有时当我更改内容并点击浏览器中的“重新加载”按钮时,应用程序需要永远超时(300000 毫秒或 5 分钟!)。之后我在浏览器中得到以下异常:
java.util.concurrent.TimeoutException: Futures timed out after [300000 milliseconds]
scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219)
scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223)
scala.concurrent.Await$$anonfun$result$1.apply(package.scala:111)
scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53)
scala.concurrent.Await$.result(package.scala:111)
play.forkrun.ForkRun$$anonfun$askForReload$1.apply(ForkRun.scala:123)
play.forkrun.ForkRun$$anonfun$askForReload$1.apply(ForkRun.scala:121)
play.runsupport.Reloader.reload(Reloader.scala:295)
play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:122)
play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scalscala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
scala.concurrent.forkjoin.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1361)
scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
控制台报错:
[error] application -
[info]
[info] ! Internal server error, for (GET) [/] ->
[info]
[info] java.util.concurrent.TimeoutException: Futures timed out after [300000 milliseconds]
[info] at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219) ~[scala-library-2.11.1.jar:na]
[info] at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223) ~[scala-library-2.11.1.jar:na]
[info] at scala.concurrent.Await$$anonfun$result$1.apply(package.scala:111) ~[scala-library-2.11.1.jar:na]
[info] at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53) ~[scala-library-2.11.1.jar:na]
[info] at scala.concurrent.Await$.result(package.scala:111) ~[scala-library-2.11.1.jar:na]
大多数时候我只是停止激活器(控制台中的 CTRL+D),然后使用“激活器运行”重新启动它,然后应用程序就可以工作了。
我已经尝试使用激活器 1.3.2 甚至在不同计算机上进行离线分发,但无济于事。
我正在使用 Scala IDE 4.0 (Eclipse)。
[编辑]:我也尝试过activator ~run,因此会尽快编译更改。
更改超时的示例:
(我只是在最后添加了第一行$document.ready(function()和相应的括号)。超时后,我停止了由 CTRL+D 运行的激活器,并由activator run 重新启动它。我没有更改任何代码!启动完成后,我的程序按预期运行。
<script>
$(document).ready(function() {
$('#icon').click(function() {
var $this = $(this);
$this.css("color","orange");
var num = $('#num');
var currentNumber = num.text().length ? parseInt(num.text()) : 0;
num.text(currentNumber + 1);
});
});
</script>
我现在经常遇到这些超时,就像我 90% 的代码更改非常烦人。
那么我该如何解决超长的超时问题?
【问题讨论】:
-
Play 很可能正在重新编译一些类,但您需要检查自己是什么花费了这么多时间,我们无法猜到......也使用
~run命令它应该快一点,因为它试图尽快编译小改动。 -
对不起,你是对的。我编辑了我的帖子并添加了一个使应用程序超时的代码示例。我已经省略了这些信息,因为我几乎 90% 的更改都会超时……所以几乎一直如此,无论我对代码进行什么更改。
~run没有帮助,我仍然超时。
标签: java eclipse scala playframework scala-ide