wake-up-neo.net

Eclipse-Debugging "Quelle nicht gefunden"

Ich habe gerade angefangen, Eclipse zu benutzen, also schont mich einfach;). Beim Versuch, einen JUnit-Testfall zu debuggen, erhalte ich ein Dialogfeld, das besagt, dass die Quelle nicht gefunden wird, wenn ich im Code meiner Testmethode zu dieser Zeile komme:

Assert.assertEquals(1, contents.size());

Ich weiß, ich sollte wahrscheinlich versuchen, die Quelle von irgendwo herunterzuladen, aber ich möchte es wirklich nicht, weil ich kein Interesse daran habe, in den JUnit-Code einzusteigen. Ich habe das JUnit-Laufzeitglas. Warum erwartet Eclipse, dass ich über alle referenzierten Tools-Quellcode verfügt, um meinen eigenen Code zu debuggen (scheint etwas albern)? 

Meine Hauptfrage ist jedoch, wie kann ich Eclipse sagen, dass dieses Dialogfeld übersprungen werden soll, wenn die Quelle nicht verfügbar ist, und ich weiterhin meinen eigenen Code debuggen kann? 

[Bearbeiten]

Ich habe die Ursache dafür isoliert. Es scheint, dass Eclipse zu glauben scheint, dass es die Quelle benötigt, wenn eine Ausnahme durch den internen JUnit-Code ausgelöst wird. Gibt es im Allgemeinen überhaupt etwas zu sagen, dass dies nicht der Fall ist, und dass stattdessen ein Fehlerdialogfeld angezeigt wird?

20
James

Ich hatte dieses nervige Problem lange Zeit, konnte es aber endlich lösen. In meinem Fall wurde irgendwo in der Transformer.IsRuntimeCode (ProtectionDomain) - Funktion von Java eine Nullzeiger-Ausnahme ausgelöst.

Ich musste nicht wirklich darüber Bescheid wissen, da die Ausnahme abgefangen und behandelt wurde, aber Eclipse unterbrach jedes Mal das Debuggen und sagte mir, dass die Quelle nicht verfügbar war. Daher musste ich ständig die Taste drücken, um die Codeausführung fortzusetzen.

Um dies zu verhindern, gehe ich:

  1. Klicken Sie im "Haltepunkte" -Fenster auf das untere Ende des Debugging-Bildschirms .__
  2. Rechtsklick auf "NullPointerException"
  3. Ungeprüft "erwischt"

Dies hat verhindert, dass der Debugger während einer abgefangenen NullPointerException den Programmablauf anhält.

alt text http://www.SharpDetail.com/p/so_breakpoint.gif

20
Chris Dutrow

Der Debug-Callstack zeigt eine JUnit-Quellcodezeile an, wenn eine Ausnahme ausgelöst wird.
Aber Sie sollten sich keine Sorgen machen, wenn Sie nicht den Quellcode von JUnit haben.

Wenn Sie eine Zeile im Callstack zurückgehen, sollten Sie die Zeile (von Ihrem - Quellcode) sehen, die die JUnit-Ausnahme verursacht hat.
Das sollte ausreichen, um Ihren Code zu debuggen.


Um die Quelle mit JUnit zu verknüpfen, können Sie den junit.jar in den Bibliotheken Ihres Projekts hinzufügen und den junit-x.y.z-src.jar dem junit-x.y.z.jar, wie so zuordnen: _:

http://web.archive.org/web/20130227201940/http://img241.i_mageshack.us/img241/1412/eclipsejunitsrc.png

Das generiert im .classpath Ihres Projekts eine Zeile wie:

<classpathentry kind="lib" path="junit-x.y.z.jar" sourcepath="junit-x.y.z-src.jar">

Hinweis: Tatsächlich würde sich der vollständige Pfad der junit[...].jar-Dateien in dieser classpathentry-Zeile befinden. Sie können jedoch auch Verknüpfte Ressourcen verwenden, um diesen festen Wert (den vollständigen Pfad) in Ihrer .classpath-Datei zu vermeiden.

10
VonC

Ich hatte ein ähnliches Problem. Ich habe das Problem behoben, indem Sie mit der rechten Maustaste auf den Projektordner im Paket-Explorer klicken und Aktualisieren auswählen. Die Codequelle war nicht mit dem Debugger synchronisiert und dies wurde korrigiert. Die Transformer.IsRuntimeCode (ProtectionDomain) -Quelle nicht gefunden wird nicht mehr angezeigt.

2
user1370258

Verwenden Sie den Schrittfilter, um zu vermeiden, dass Sie durch die ... junit ... Pakete gehen. Klicken Sie mit der rechten Maustaste auf den Stack-Trace und wählen Sie Filter Package. Möglicherweise müssen Sie die Filterung zuerst mit Schrittfilter verwenden aktivieren. ~~~

1
Steve Pitchers

Berechnen Sie contents.size () stattdessen in einer separaten Zeile oder setzen Sie einen Haltepunkt für die Methode. 

Beachten Sie auch die Junit-Ansicht in Eclipse, in der Sie durch die Stapelablaufverfolgung navigieren können.

Ich hatte ein ähnliches Problem mit einem anderen Glas, selbst wenn ich auf die Quelle verwies, würde es erneut danach fragen. Ich konnte es lösen, indem ich das Glas mit debug="on" auf ANT kompilierte.

0
Mashimom