我已经使用 Groovy 几年了,但最近几个月没有,所以这可能只是一个新手问题。我正在尝试解析日志文件,但是当我尝试这样做时:
myFile.eachLine { line ->
/* 2014 Jul 30 08:55:42:645 GMT -4 BW.TMSJobService-TMSJobService-1
* User [BW-User] - Job-2584 [Process/Common/LogAuditInfo.process/WriteToLog]: */
/* 1234567890123456789012345678901 */
/* 0 1 2 3 */
LogItem logItem = new LogItem()
// get the time stamp
String timestamp = line.substring(0, 31)
SimpleDateFormat sdf = new SimpleDateFormat('yyyy MMM dd HH:mm:ss:S')
logItem.date = sdf.parse(timestamp)
}
我得到这个例外:
线程“主”groovy.lang.MissingMethodException 中的异常:没有方法签名:java.text.SimpleDateFormat.parse() 适用于参数类型:(java.lang.String, ce.readscript.TmsLogReader$_read_closure1_closure3) 值:[ 2014 年 7 月 30 日 08:34:47:079 GMT -4, ce.readscript.TmsLogReader$_read_closure1_closure3@14235ed5] 可能的解决方案:parse(java.lang.String), parse(java.lang.String, java.text.ParsePosition) , parse(java.lang.String, java.text.ParsePosition), wait(), clone(), clone() at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55) at org.codehaus .groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:46) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
它始终是闭包的最后一行。如果我在“解析”之后添加代码,那么它会轰炸这段代码。即使是 "079".toLong() 调用也会出错。
我在堆栈溢出中看到一些类似的错误,但没有解决我的问题。