5

I don't understand why I am getting the following error. Any thoughts?

I am getting error:

Cannot cast object 'true' with class 'java.lang.Boolean' to class 'java.io.File'

This is the code producing the error at line 'if (envProp.exists()...':

static private File envProp = new File('env.properties')
static private File envPropBak = new File('env.properties.bak')

@BeforeClass
static void beforeAll() {
    if (envProp.exists()) {
        envPropBak.write( envProp.text )
    }
}

I don't understand why envProp.exists() is trying to cast anything as another object. Method .exists() should just return a boolean.

Thanks

4

3 回答 3

6

我今天遇到了同样的问题,但在我的情况下是:

org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'true' with class 'java.lang.Boolean' to class 'java.util.List'

问题是,如果你有这样的事情:

public List<Foo> method(){
    methodThatReturnsTrue()
}

因为 Groovy 使用最后一句的 return 作为方法的返回值,它会尝试将 true 强制转换为<some_not_boolean_type>你和我得到的错误。

于 2013-06-13T11:43:08.457 回答
1

为了完整起见,我需要说我收到了类似的信息:

无法将具有类“java.lang.Boolean”的对象“true”转换为类“java.util.List”

当我调用时:

final List<String> reportedChangedFiles = linesOfChangedFiles.removeAll([null])

我期待 removeAll() 返回一个新集合,但我忘记了它修改了当前集合并返回一个布尔值。所以这很简单:

linesOfChangedFiles.removeAll([null])
于 2015-06-19T08:16:15.590 回答
0

这是一个错误并在较新的版本(2.3.2)中得到修复: https ://issues.apache.org/jira/browse/GROOVY-6810

于 2014-11-13T21:41:32.703 回答