找到并找到所有不适用于grails 2.1.1 / groovy 1.8.8

时间:2012-09-25 23:28:41

标签: grails groovy

我有一些在grails 2.1.0 / groovy 1.8.6中运行的例程,但是停止使用grails 2.1.1 / groovy 1.8.8。

此代码在grails 2.1.0中运行:

def items = []
Object[] item = ["Fluff", new Date(), 11235813]
items << item
println items
assert !items.findAll{it[0] == "Pelusa"}
assert items.findAll{it[0] == "Fluff"}

当我在grails 2.1.1中运行它时,它抛出了这个异常:

groovy.lang.MissingMethodException: No signature of method: 
Script1$_run_closure1.doCall() is applicable for argument types: 
(java.lang.String, java.util.Date, java.lang.Integer) values: 
[Fluff, Wed Sep 26 01:02:23 ??? 2012, 11235813]
Possible solutions: doCall(), call(), doCall(java.lang.Object), findAll()

这是一些环境信息:

java version "1.7.0_07"
OpenJDK Runtime Environment (IcedTea7 2.3.2) (7u7-2.3.2a-0ubuntu0.12.04.1)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)

我怎样才能让它再次运作?

编辑:我认为它可能是Grails问题,因为它在Groovy Console 2.0.1上运行良好

编辑:这可能是一个错误。 I raised a jira issue.

1 个答案:

答案 0 :(得分:0)

你应该做点什么

    assert !items.flatten().findAll{it[0] == "Pelusa"}
    assert items.flatten().findAll{it[0] == "Fluff"}

“items”是一个列表列表,因此“it [0]”实际上是整个“item”列表,而不是“Fluff”。我不知道为什么这适用于旧版本的grails而不是2.1.0