Groovy:调用Java API时缺少方法异常

Groovy:调用Java API时缺少方法异常,groovy,missingmethodexception,Groovy,Missingmethodexception,我已经使用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/WriteT

我已经使用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.SimpleDataFormat.parse()适用于参数类型:(java.lang.String,ce.readscript.TmsLogReader$\u read\u closure1\u closure3)值:[2014年7月30日08:34:47:079 GMT-4,ce.readscript.TmsLogReader$\u read\u closure1]_closure3@14235ed5] 可能的解决方案:parse(java.lang.String)、parse(java.lang.String、java.text.ParsePosition)、parse(java.lang.String、java.text.ParsePosition)、wait()、clone()、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)

这永远是结尾的最后一行。如果我在“parse”之后添加代码,那么它会在这段代码上爆炸。即使是“079”.toLong()调用也会出错


我在堆栈溢出中看到了一些类似的错误,但没有解决我的问题

它试图调用不存在的
simpleDataFormat::parse(String,Closure)
。好像有个打字错误。它在groovy 2.1.8和2.3.4下运行良好。您可以尝试将其变得更为groovy,以检查它是否有一些键入错误,但您的示例中没有:

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)
}

我使用了由来已久的删除文件并重新开始的技术。我再也没有遇到过这个问题

哪个groovy版本?您在其中显示的代码不会导致显示的异常。您的代码示例中还没有表示其他因素。请考虑删除问题。它对未来的游客有用吗?