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

Luc*_*Luc 3 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)
Run Code Online (Sandbox Code Playgroud)

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

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

Bri*_*new 5

用于StackTraceElement toString()的Javadoc(Java 9,注释)说明了格式:

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

请注意,上面的某些元素是如何省略的。

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