1

有没有办法从 JSR 223 获得更好的错误消息?我正在尝试使用它来运行 Groovy 脚本,每当执行中出现问题时,我都会得到真正神秘的异常。这是一个例子:

  org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.   invoke(PojoMetaMethodSite.java:270)
      at    org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:52)
    at   org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
     at Script1.search(Script1.groovy:28)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:88)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)
    at groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:227)
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnCurrentN(ScriptBytecodeAdapter.java:77)
    at Script1.processEvent(Script1.groovy:12)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:88) 
4

1 回答 1

3

恐怕我能想到的只有两件事。

  1. 使用 Intellij IDEA,它会合并堆栈跟踪,以便您最初只能看到与您的代码相关的位。我认为社区版现在已经有了 groovy 支持,所以你可能会摆脱免费版本。
  2. 善于扫描这些堆栈跟踪以查找您的代码。在您的示例 Script1.groovy 中,第 28 行试图将方形钉安装在圆孔中。

您也许可以配置您的 IDE/日志阅读器以突出显示 *.groovy 行或类似的东西

抱歉不能再有帮助了。

PS。别担心不是你,这些堆栈跟踪旨在扰乱你的想法

于 2011-03-09T20:39:07.093 回答