2015-07-24 5 views
13

Ich habe bemerkt, dass, wenn eine Ausnahme auf dem Terminal geworfen wird, habe ich oft ein abkürzen Ausfall Spur bekommen wie folgt aus:Wie alle Java-Ausnahmen auf dem Terminal gedruckt werden?

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" 

Was ich will, ist wissen, wie all die Spur zu drucken, einschließlich derjenigen, ... 13 more.

EDIT: Dieser Beitrag wurde als ein mögliches Duplikat von Print full call stack on printStackTrace()? identifiziert. Ich habe letzteres gelesen, aber keine Antwort auf meine Frage gefunden. Ich habe nur Informationen darüber gefunden, warum es passiert.

+0

Eigentlich .. es entier Sache gedruckt wird .. was hier stoppen Sie Ihre Konsole ist ... Steigern Sie Ihre Konsole Seite Linien (oder unbegrenzt machen), dann werden Sie enterire Liste –

+4

Duplikat erhalten: http://stackoverflow.com/questions/1043378/print-full-call-stack-on-printstacktrace – chengpohi

+0

Und wie kann ich diese Änderungen in meine Konsole @PavanKumarK implementieren? Ich benutze übrigens win7, vielleicht ist es relevant für die Frage. – Maslor

Antwort

4

können Sie passieren das Throwable Objekt (die Exception in Ihrem Fall) ein Verfahren wie folgt aus:

static void printFullTrace(Throwable throwable){ 
    for(StackTraceElement element: throwable()) 
     System.out.println(element); 
} 

Die Wahrheit ist, dass Sie bereits in diese Richtung, die gesamte Stack-Trace zu sehen, weil ein Teil von es wird wiederholt und der Kürze halber weggelassen. Sie können den Mechanismus besser verstehen here.

+0

Obwohl dies in der Tat recht nützliche Informationen ist, was ich suche, wenn es überhaupt existiert, ist eine einfache Möglichkeit, meine Befehlszeile alle Spuren zu drucken, anstatt zu schreiben "... 13 mehr" @PavanKumarK sagte in der Kommentare, dass Sie die Seitenzeilen Ihrer Konsole vergrößern könnten, aber seine Antwort noch nicht entwickelt haben ... Ist es möglich? – Maslor

+0

@Maslor: Ich habe es hinzugefügt –

+0

Danke für die Klarstellung! – Maslor

0
StackTraceElement[] stackTraces = Thread.currentThread().getStackTrace(); 
for (StackTraceElement element : stackTraces) { 
    System.out.println(element); 
} 
+0

Ich suche nach einer alternativen einfachen Methode, die keinen Code zu meiner Anwendung hinzufügen muss, wenn sie existiert. – Maslor

+0

@ Recoba20 Erklären Sie Ihren Code. –

+0

http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#getStackTrace() ist das genug, oder ich vermisse etwas, das Sie wissen, aber nicht teilen möchten? – Recoba20

-1

Die Standard-Windows-Konsole (cmd) von Funktionen sehr kurz ist, müssen Sie eine Konsole auf Steroiden wie diejenigen installieren, die es gibt, so dass Sie eine größere Rückholung haben können. Werfen Sie einen Blick auf die aufgeführten Alternativen here.

Persönlich verwende ich cmder, das ist nicht in der Liste, aber Sie müssen sie alle testen und peek, die Sie besser passen.

0

Sie können den gesamten Stapel Traces nach unten Methode drucken. Das Lesen der Java Doc for printStackTrace wird erklären, warum dies so konzipiert ist.

void printAllTraces(Throwable throwable) { 
     StackTraceElement[] stackTraces = throwable.getStackTrace(); 
     for (StackTraceElement stackTrace: stackTraces) { 
      System.out.println(stackTrace); 
     } 
} 
+0

Ich suche nach einer alternativen einfachen Methode, die keinen Code zu meiner Anwendung hinzufügen muss, wenn sie existiert. – Maslor

+1

printStackTrace kann nur so viel geben und dies ist so konzipiert, um übersichtlich zu sein. Also, ohne kleinen Code hinzuzufügen, fürchte ich, es gibt keine Möglichkeit, die volle Stack-Spur zu bekommen. – sakthisundar

Verwandte Themen