2015-07-24 9 views
13

Ho notato che ogni volta che viene generata un'eccezione sul terminale, ottengo spesso una traccia fallimento abbreviare come questa:Come stampare tutte le eccezioni java sul terminale?

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" 

Quello che voglio sapere è come stampare tutto il tracciato, compresi quelli ... 13 more.

MODIFICA: questo post è stato identificato come possibile duplicato di Print full call stack on printStackTrace()?. Ho letto quest'ultimo, ma non ho trovato una risposta alla mia domanda, ho solo trovato informazioni sul perché accade.

+0

realtà .. è stamperà cosa entier .. ciò che è fermarsi qui è la console ... Aumentare le linee di pagina del console (o renderlo illimitato), allora si ottiene enterire lista –

+4

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

+0

E come posso applicare tali modifiche alla mia console @PavanKumarK? Sto usando win7, a proposito, forse è pertinente alla domanda. – Maslor

risposta

4

È possibile passare l'oggetto Throwable (il Exception nel tuo caso) ad un metodo come questo:

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

La verità è che si sta già vedendo l'intero stack trace in quelle righe, perché una parte di è ripetuto e così omesso per brevità. Puoi capire meglio il meccanismo here.

+0

Sebbene si tratti di informazioni davvero utili, quello che sto cercando, se esiste, è un modo semplice per far sì che la mia riga di comando stampi tutta la traccia, invece di scrivere "... 13 more" @PavanKumarK commenti che potresti aumentare le linee di pagina della tua console ma non ha ancora sviluppato la sua risposta ... È possibile? – Maslor

+0

@Maslor: l'ho aggiunto –

+0

Grazie per il chiarimento! – Maslor

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

Sto cercando un metodo semplice alternativo che non richieda l'aggiunta di codice alla mia applicazione, se esiste. – Maslor

+0

@ Recoba20 Spiega il tuo codice. –

+0

http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#getStackTrace() è abbastanza, o mi manca qualcosa che tu sai, ma non vuoi condividere? – Recoba20

-1

Lo standard console di Windows (cmd) è molto breve di funzioni, è necessario installare una console con gli steroidi, come quelli che sono là fuori, così sarete in grado di avere uno scrollback più grande. Dai uno sguardo alle alternative elencate here.

Personalmente io uso cmder, che non è nella lista, ma è necessario testarli tutti e sbirciare che si adattano meglio.

0

È possibile stampare l'intera traccia Tracce con il metodo seguente. Leggere il Java Doc for printStackTrace dirà perché è stato progettato in questo modo.

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

Sto cercando un metodo semplice alternativo che non richieda l'aggiunta di codice alla mia applicazione, se esiste. – Maslor

+1

printStackTrace può dare solo questo e questo è stato progettato per essere conciso. Quindi, senza aggiungere un piccolo codice, temo che non sia possibile ottenere la traccia completa dello stack. – sakthisundar