我注意到,无论何时在终端上抛出异常,我都会得到一个简短的故障跟踪,例如:
java.lang.NoClassDefFoundError: javafx/application/Application
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 13 more
Exception in thread "main"
我想知道的是如何打印所有跟踪,包括那些... 13 more
。
编辑:此帖子已被确定为Print full call stack on printStackTrace()?的可能副本。我确实读了后者,但没有找到我的问题的答案,我只找到了它为什么会发生的信息。
答案 0 :(得分:4)
您可以将Throwable
对象(在您的情况下为Exception
)传递给如下方法:
static void printFullTrace(Throwable throwable){
for(StackTraceElement element: throwable())
System.out.println(element);
}
事实是,您已经在这些行中看到了整个堆栈跟踪,因为它的一部分被重复,因此为了简洁而省略。您可以更好地理解here机制。
答案 1 :(得分:0)
StackTraceElement[] stackTraces = Thread.currentThread().getStackTrace();
for (StackTraceElement element : stackTraces) {
System.out.println(element);
}
答案 2 :(得分:0)
您可以通过以下方法打印整个堆栈跟踪。阅读Java Doc for printStackTrace将告诉我为什么这样设计。
void printAllTraces(Throwable throwable) {
StackTraceElement[] stackTraces = throwable.getStackTrace();
for (StackTraceElement stackTrace: stackTraces) {
System.out.println(stackTrace);
}
}
答案 3 :(得分:-1)