2012-05-09 8 views
7

ich vor kurzem auf helios aktualisiert und jetzt jedes Mal, wenn ich für eine Klasse in einen Konstruktor Schritt (zB Cat myCat = new Cat();), Eclipse-Debugger zeigt der Stapel alsWenn in Klasse Instanziierung Schritt, Eclipse Debugger nativen Code geht

java stack trace entering instantiation:

Um zum eigentlichen Konstruktorcode zu kommen, muss ich mehrmals aussteigen, was lästig ist. Dies geschieht mit jeder Klasse und trotz des Stapels sehe ich keine Fehlermeldungen in der Konsole. Wie behebe ich das, so dass es direkt in den Konstruktor für meine Klasse tritt?

Dies geschieht nur beim ersten Mal die Klasse verwendet wird, und sogar für Klassen, die in derselben src-Datei wie die aktuelle sind.

+0

existiert die Klasse? es sieht aus wie eine ClassNotFoundException geworfen wird ... – pstanton

+1

Klasse ist definitiv vorhanden, der Debugger tritt schließlich in dem Konstruktor ein, und das Programm wird erfolgreich ausgeführt. – cplusplus

Antwort

13

Eklipse einen Schritt Filter bevorzugt in den Debugger-Einstellungen Java hat. Seine Standardvoreinstellung filtert java.lang.ClassLoader heraus, dies funktionierte jedoch nicht. Dies könnte etwas damit zu tun haben, dass jre7 kürzlich installiert und auf jre7 umgestellt wurde. Um mein Problem zu lösen, habe ich einen Filter hinzugefügt, um einen beliebigen Code im java.lang Paket zu durchlaufen.

enter image description here

0

Von der in Eclipse gemeldeten Stack-Spur scheint es, dass eine ClassNotFoundException initialisiert wurde und geworfen wird. Ist die Anwendung, die Sie geschrieben haben, in irgendwelche Probleme geraten?

Haben Sie Haltepunkte im Konstruktor der Klasse gesetzt? Sie konnten überhaupt nicht in den Konstruktor einsteigen?

Haben Sie Class.forname() verwendet oder importiert, um die Klasse für JRE einzuführen?

+0

Keine Probleme, und ich konnte in den Konstruktor einsteigen. – cplusplus

+0

Nichts Besonderes, um die Klasse zu importieren. – cplusplus

5

Ich denke, dass die ClassNotFoundException gerade als Teil des Ladens der Klasse passiert - das Problem ist, dass Sie einen Haltepunkt gesetzt haben, um auszulösen, wenn diese Ausnahmen ausgelöst werden. Meine Vermutung ist, dass Ihre Version von Eclipse diesen Haltepunkt standardmäßig aktiviert hat, während der alte nicht.

Auschecken this link, die ein ähnliches Problem meldet und bietet die Lösung, die nur diesen Haltepunkt deaktivieren soll.

(im Interesse der Lehre, dass zu fischen und alle, war das Google-Suchwort "Debugger Launcher $ appclassloader eclipse".)

+0

Dies ist in der Tat das Problem und tritt beim ersten Aufruf einer Methode für eine Klasse auf, die noch nicht geladen wurde. Drücken Sie einfach F7 (Return) so oft wie es dauert, um zu Ihrer Klasse zurückzukehren - ich finde, dass es normalerweise 8 Mal F7 benötigt, um zu meiner Klasse zurückzukehren. –

+0

BTW, ich frage mich, ob Sie das auch umgehen könnten, indem Sie die Klasse laden, bevor Sie in den Konstruktor treten. Was passiert zum Beispiel, wenn Sie in Ihrem Debugger 'Class.forName (Cat.class.getName())' ausgewertet haben? – yshavit

+0

Alles, was die Klasse lädt, wird dieses Problem umgehen. –