java - Java 堆栈跟踪中的斜线是什么意思?
问题描述
在以下堆栈跟踪中:
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 堆栈跟踪中的斜线”之类的查询不是很有帮助。我通过查找提到的类找到了其他一些示例,但不是它们的含义。
解决方案
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)”所示。
推荐阅读
- php - wp_list_table 中的批量操作
- javascript - JS Jquery 如何选择鼠标点击 Target > parent > .Class
- oracle - Oracle Apex 19.1 中的上传向导限制
- php - PHP cURL 发布数据未发送到目标 url
- c# - 将 LINQ XML 文件的结果加载到数据网格
- gradle - 如何无错误地构建流集数据收集器边缘?
- sql - 自联接sql中的多行并创建新列
- sql - SQL中保留较高值并删除较低值
- javascript - 反应从 API 获取数据并显示
- swiftui - 如何在 SwiftUI 中访问该视图之外的另一个类中的 View 的 EnvironmentObject?