我有一段代码打印当前的java文件以供日志记录。
final StackTraceElement stackTraceElement = new Throwable().fillInStackTrace().getStackTrace()[2];
final String parentClassName = stackTraceElement.getFileName().replaceAll(".java", "");
final int lineNumber = stackTraceElement.getLineNumber();
我在groovy中写了一些东西,使用上面的代码打印日志,大部分时间都可以使用,但是经过几次运行后我才开始获得NPE
java.lang.NullPointerException
at com.bla.general.util.log.LogUtils.generateLogMessage(LogUtils.java:140)
at com.bla.general.util.log.LogUtils.info(LogUtils.java:67)
at sun.reflect.GeneratedMethodAccessor831.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324)
at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:43)
at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:88)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at com.bla.AppVersionServiceImpl.getAppVersion(AppVersionServiceImpl.groovy:47)
当以下行是发起人时:
LogUtils.info("Trying to get details for device hash ${deviceHash}");
我使用tomcat和java 1.7作为我的堆栈。重启Tomcat后,事情恢复正常。 这是我对动态JVM世界的第一次努力。如果你能开导我,我会很感激
答案 0 :(得分:0)
我在http://groovy.329449.n5.nabble.com/Getting-StackTraceElement-in-groovy-application-td5720649.html
上得到了完整的答案Jochen回答“blackdrag”Theodorou