Play Framework await()导致UnexpectedException

时间:2011-06-01 12:32:33

标签: java playframework

我今天早上升级到了Play 1.2.1,所以我可以利用他们的新功能来编写HTTP功能。

当我使用下面的例子时,来自Play文档(*我是 使用不同的方法名称*),我收到一个UnexpectedException 错误。

public static void loopWithoutBlocking() {
    for(int i=0; i<=10; i++) {
        Logger.info(i);
        await("1s");
    }
    renderText("Loop finished");
}


错误如下:

Oops: UnexpectedException

An unexpected error occured caused by exception UnexpectedException:
While applying class play.classloading.enhancers.ContinuationEnhancer
on controllers.Application


上面的示例方法放在Application控制器中,我已经包含了play.libs.F库。

使用await()调用的方法是否需要嵌套在更深层次的内容中?

3 个答案:

答案 0 :(得分:2)

以防任何人遇到同样的问题(似乎其他人也有报道)我认为我最好总结一下我是如何解决这个问题的(虽然它可能不被视为'答案'):

正如@Codemwnci和Julien Tournay @ Play-framework google group所指出的那样。问题中包含的代码实际上已经运行。

错误的实际原因是Application类中的一些“无关”代码似乎与await()调用冲突。找到有问题的方法后,我整理了代码,导致错误自行解决 - 但我无法确定问题的实际原因(相信我,我确实看过了)。

那么,你问的答案是什么?

它不是await()方法,它是你代码中的其他东西......所以注释除了包含await()调用的方法之外的所有内容并找到打破它的代码。

尽情发现!

答案 1 :(得分:1)

似乎很多关于等待的错误已经在1.2.4版本之后修复(当前我正在写这个答案的时候)。

许多问题仍然没有解决,我遇到了同样的问题。

但是有一个备用回购,位于:https://github.com/mbknor/play/tree/1.2.4-mbknor-custom-release

包含1.2.4版本的Play以及一些关键更新/修复,包括等待的那些。

我试过了,对于我的问题,它现在已经解决了。

也许它适合你。

现在,如果您在阅读这些专线时发布了Play 1.2.5,那对您来说应该不是问题。

答案 2 :(得分:1)

我今天偶然发现了这个问题,我注意到它实际上是由一个方法的长度引起的。是的,这是正确的,在导致问题的同一个类中有一个太长方法,在将其中一部分提取为另一个方法后,问题就消失了!因此,请务必检查您的代码。