错误讯息:
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。
任何输入都很棒
答案 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方法:/