2012-05-09 5 views
7

Recentemente ho aggiornato a helios e ora ogni volta che passo in un costruttore per una classe (ad es Cat myCat = new Cat();), debugger Eclipse mostra la pila comeQuando entrare in classe di un'istanza, debugger Eclipse va a codice nativo

java stack trace entering instantiation:

Per ottenere il codice costruttore effettivo, devo uscire più volte che è fastidioso. Questo sta accadendo con ogni classe e nonostante lo stack non vedo mai messaggi di errore nella console. Come posso risolvere questo problema in modo che passi direttamente al costruttore per la mia classe?

Questo accade solo la prima volta che viene utilizzata la classe e anche per le classi che si trovano nello stesso file src di quello corrente.

+0

la classe esiste? sembra che venga generata una ClassNotFoundException ... – pstanton

+1

La classe esiste definitivamente, il debugger alla fine entra nel costrutto e il programma viene eseguito con successo. – cplusplus

risposta

13

Eclipse ha una preferenza filtro di passo nelle preferenze debugger Java. La sua preferenza predefinita esclude java.lang.ClassLoader, tuttavia non funzionava. Questo potrebbe avere qualcosa a che fare con l'installazione e il passaggio di recente a jre7. Per risolvere il mio problema ho aggiunto un filtro per scorrere qualsiasi codice nel pacchetto java.lang.

enter image description here

0

Dalla traccia stack riportata in Eclipse, sembra che sia stato inizializzato uno ClassNotFoundException, l'applicazione che hai scritto ha incontrato problemi?

Hai impostato i breakpoint nel costruttore della classe? non sei stato in grado di entrare nel costruttore?

Si stava usando Class.forname() o si importa per introdurre la classe su JRE?

+0

Nessun problema, e sono stato in grado di entrare nel costruttore. – cplusplus

+0

Niente di speciale da importare per la classe. – cplusplus

5

Penso che ClassNotFoundException stia appena accadendo come parte del caricamento della classe - il problema è che si ha un breakpoint impostato per innescarsi quando vengono lanciate quelle eccezioni. La mia ipotesi è che la tua versione di Eclipse abbia questo breakpoint attivo per impostazione predefinita, mentre quello precedente no.

Verificare this link, che segnala un problema simile e fornisce la soluzione, che è solo per disabilitare quel punto di interruzione.

(Nell'interesse di insegnare a pescare e tutto ciò che, il termine di ricerca Google è stato "Eclipse debugger launcher $ appclassloader".)

+0

Questo è effettivamente il problema e si verifica alla prima chiamata di un metodo su una classe che non è stata ancora caricata. Basta premere F7 (ritorno) tutte le volte che serve per tornare alla tua classe - trovo che in genere occorrono 8 pressioni di F7 per tornare alla mia classe. –

+0

Btw, mi chiedo se si potrebbe anche aggirare questo caricando la classe prima di entrare nel costruttore. Ad esempio, cosa succede se hai valutato nel tuo debugger 'Class.forName (Cat.class.getName())'? – yshavit

+0

Tutto ciò che ottiene la classe caricata ignorerà questo problema. –

Problemi correlati