1
我有一个很大的red5项目,似乎在某个时候正在执行一个函数。我试着在代码中发现这个特定函数是如何在那个时候执行的,我找不到它。我想知道是什么叫它。如何获得正确的堆栈跟踪而不是反射堆栈跟踪?
我读了stackoverflow中的答案,我发现以下显示当前位置的堆栈跟踪信息。
StackTraceElement[] elements = Thread.currentThread().getStackTrace();
for (int i=0;i<elements.length;i++) {
log.error(elements[i].toString());
}
,我收到了以下的输出:
java.lang.Thread.getStackTrace(Thread.java:1479)
component.lobby.LobbyMysql.getChallenges(LobbyComponentMysql.java:76)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.commons.beanutils.BeanMap.get(BeanMap.java:390)
org.red5.io.amf.Output.writeObject(Output.java:357)
org.red5.io.object.Serializer.writeObjectType(Serializer.java:300)
org.red5.io.object.Serializer.writeComplex(Serializer.java:140)
org.red5.io.object.Serializer.serialize(Serializer.java:86)
org.red5.io.amf.Output.writeObject(Output.java:357)
org.red5.io.object.Serializer.writeObjectType(Serializer.java:300)
org.red5.io.object.Serializer.writeComplex(Serializer.java:140)
org.red5.io.object.Serializer.serialize(Serializer.java:86)
...
我得到的是被执行,但由于某种原因,最高层是反射类的函数的名称。有没有办法找出调用这个特定函数的实际方法?
我不是Java和反射,所以请多多包涵:)
感谢
要回答为什么它被调用该方法时,我相信它正试图序列化对象,因此调用你班级中的所有获得者来获得当前状态。它使用反射来做到这一点。 – DaveJohnston