在Java堆栈跟踪中,斜杠是什么意思?

时间:2019-03-08 10:51:08

标签: java stack-trace

在以下堆栈跟踪中:

java.lang.NullPointerException
    at burp.ConfigMenu.run(Config.java:38)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

斜杠是什么意思?我知道例如“ burp.ConfigMenu.run(Config.java:38)”表示,但不是前面带有“ java.base”或“ java.desktop”的行。

它看起来像是某种别名,超类,名称空间...但是我不知道。 Google / DDG对于“ java堆栈跟踪中的斜线”之类的查询不是很有帮助。通过查找提到的类,我找到了其他一些示例,但没有找到它们的意思。

1 个答案:

答案 0 :(得分:5)

The Javadoc for StackTraceElement toString()(Java 9,注释)说明了格式:

  

第一个示例显示了由三个组成的堆栈跟踪元素   元素,每个元素用“ /”分隔,后跟源文件名和   包含执行点的源行的行号。的   第一个元素“ com.foo.loader”是类加载器的名称。的   第二个元素“ foo@9.0”是模块名称和版本。第三   element是包含执行点的方法; “ com.foo.Main”“   是完全限定的类名,而“ run”是方法的名称。   “ Main.java”是源文件名,“ 101”是行号。

请注意,上述内容中的某些元素是如何省略的。

  

如果类加载器是内置类加载器或未命名,则   如图所示,省略了第一个元素及其后跟的“ /”   “ acme@2.1/org.acme.Lib.test(Lib.java:80)”。如果第一个元素是   省略,并且模块是未命名的模块,第二个元素和   其后跟的“ /”也被省略,如下所示   “ MyClass.mash(MyClass.java:9)”。