没有方法签名:org.codehaus.groovy.runtime.GStringImpl.split()

时间:2014-01-08 23:40:19

标签: grails ubuntu groovy ubuntu-12.04

错误讯息:

No signature of method: org.codehaus.groovy.runtime.GStringImpl.split() 
is applicable for argument types: (java.lang.String) values: [:]

Possible solutions: split(), split(), split(groovy.lang.Closure), 
plus(java.lang.String), wait(),toList()

代码段:

static getRosterId(def session) {
     session.filter?.split(':')[0]
}
static getSubject(def session) {
    session.filter?.split(':')[1]
}

JDK:

OpenJDK Runtime Environment (IcedTea6 1.12.6) (6b27-1.12.6-1ubuntu0.12.04.4)OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)

Grails版本:

2.0.1

Ubuntu版本:

Ubuntu 12.04.3 LTS (GNU/Linux 3.8.0-29-generic x86_64)

这是对普通字符串的分割...当然它是一个GString而在grails中,这个代码在生产中,在我们的本地盒子上工作,但不适用于我们的CI Ubuntu服务器...不确定为什么Grails无法在这个特定的环境中解析String方法,我们在这个类中没有做任何特殊的事情,没有String.metaClass操作......直接Grails。

任何输入都很棒

1 个答案:

答案 0 :(得分:1)

我们的最终解决方案是

static getRosterId(def session) {
     session.filter?.toString().split(':')[0]
}
static getSubject(def session) {
     session.filter?.toString().split(':')[1]
}

Groovy中不需要这样做! :(一个GStringImpl对象应解析所有GString和java.lang.String方法:/