我已经使用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)
}
我得到了这个例外:
线程中的异常" main" groovy.lang.MissingMethodException:没有方法签名:java.text.SimpleDateFormat.parse()适用于参数类型:(java.lang.String,ce.readscript.TmsLogReader $ _read_closure1_closure3)值:[2014年7月30日08:34 :格林威治标准时间47:079,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(),克隆() 在org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55) 在org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:46) 在org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
它始终是关闭中的最后一行。如果我在解析'之后添加代码,那么它会对此代码进行轰炸。即使是" 079" .toLong()调用也会出错。
我在堆栈溢出中看到一些类似的错误,但没有解决我的问题。
答案 0 :(得分:1)
它试图调用不存在的SimpleDateFormat::parse(String, Closure)
。某处似乎有一个错字。它在groovy 2.1.8和2.3.4下工作正常。您可以尝试使其更加常规,以检查它是否有一些输入错误不在您的示例中:
new File("log.log").eachLine { line ->
def item = new LogItem()
def timestamp = line[0..30]
item.date = Date.parse('yyyy MMM dd HH:mm:ss:S', timestamp)
}
答案 1 :(得分:0)
我使用了历史悠久的删除文件并重新开始的技术。我还没有遇到过这个问题。