我在Java Swing应用程序中使用Groovy作为我计划强制提供动态语言的一部分,直到我喜欢它们(部分正在发生)。
我的堆栈跟踪填充了像
这样的Groovyorg.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor
有没有办法让Eclipse删除所有codehaus
内容(基本上是过滤器堆栈跟踪)?
编辑:我可以使用grep
(好吧,not yet)从命令行执行此操作,所以它不是那么糟糕,但Eclipse内部也会很棒
答案 0 :(得分:10)
Groovy中有一个实用程序可以完全满足您的需求:StackTraceUtils。 STU将清除堆栈跟踪中的所有呼叫站点信息,留下您真正感兴趣的内容。
编辑:在Java中,您必须根据评论在java.lang.RuntimeException
中包含异常。
使用示例:
try {
1/0;
} catch (Throwable t) {
throw new RuntimeException(org.codehaus.groovy.runtime.StackTraceUtils.sanitize(t)); //Modifies the Throwable and rethrows
}
StackTraceUtils在最新版本的Groovy中提供,最初来自Grails。我不确定你会如何将这个应用到你的所有项目堆栈跟踪中,但我认为Griffon和Grails都这样做,所以这些项目应该有一些提示。
答案 1 :(得分:2)
我没有“Run as Groovy application”的答案,但是如果你在Eclipse中运行GroovyTestcases作为jUnit测试,那么堆栈跟踪视图上方会有一个“过滤器堆栈跟踪”按钮。