it-swarm.com.de

Eclipse Java Debugging: Quelle nicht gefunden

Beim Debuggen einer Java-App in Eclipse erhalte ich in zwei Fällen den Fehler " Quelle nicht gefunden ":

  • Einspringen in eine Datei in einem anderen Projekt, das bereits importiert wurde
  • Eingeben einer Datei in einem installierten Maven-Repository

Die Dateien sind vorhanden, aber Eclipse tritt nicht in sie ein, stattdessen zeigt sie eine Schaltfläche für " attach source ".

Ich habe versucht, eine Verbindung herzustellen (wodurch ein Dialog geöffnet wurde, um eine Variable zu definieren ?!) und Eclipse sprang zur Datei, aber der Debugger konnte dort keine Variablen prüfen. Das manuelle Anhängen der Quelle für jede Abhängigkeit ist nicht praktikabel, da in meinem Fall Tausende von Abhängigkeitsdateien vorhanden sind.

Ich bin neu bei Eclipse\Java, also würde eine Erklärung, warum dies geschieht, + wie dies gelöst werden kann, sehr helfen!

162
Jonathan

Eclipse-Debugging funktioniert mit der Klasse tatsächlich geladen vom Programm.

Die von Ihnen beschriebenen Symptome klingen so, als ob die betreffende Klasse nicht im Projekt gefunden wurde, sondern in einem Verteilungsglas ohne Debug-Info vorher das Projekt, mit dem Sie arbeiten, gefunden wurde.

Dies kann verschiedene Ursachen haben. Sehen Sie sich jedoch den Ort an, an dem die Klassen gefunden werden, die dieses Verhalten zeigen (siehe Navigationsbereich, um es zu identifizieren). Sie werden wahrscheinlich den Erstellungspfad des Projekts ändern müssen, um die Verwendung dieser JAR zu vermeiden, und die JVM muss das Projekt stattdessen verwenden.

BEARBEITEN: Beachten Sie, dass es ab 2018 üblich ist, ein Build-Framework wie Maven zu verwenden, bei dem der Build-Pfad vom m2e-Plugin verwaltet wird. Dieses Problem sollte daher weniger häufig auftreten als bei der Frage, zu der die Frage gestellt wurde.

Nur 3 Schritte zur Konfiguration der Eclipse IDE:

Hinweis: Nach dem Aktualisieren der Quellensuchpfade müssen Sie die Debug-Sitzung beenden und erneut starten. Andernfalls zeigt die Datei mit der fehlenden Quelle weiterhin "fehlende Quelle" an.

Quellensuche bearbeitenWählen Sie den Befehl Quellensuche bearbeiten ... [Quellensuche bearbeiten], um das Dialogfeld "Quellpfad" zu öffnen, in dem Sie Änderungen am Quellensuchpfad des ausgewählten Debug-Ziels vornehmen können.

enter image description here

enter image description here

enter image description here

IMPORTANT Starten Sie Eclipse nach diesem letzten Schritt erneut.

252
Douglas Frari

Die Symptome beschreiben den Fall perfekt, wenn der gefundenen Klasse keine Quelle zugeordnet (oder zugewiesen) ist.

  • Sie können die Quellen für JDK-Klassen in Preferences> Java> Installed JRE zuordnen. Wenn JRE (nicht JDK) als zu verwendende Standard-JRE erkannt wird, haben Ihre JDK-Klassen keine angehängten Quellen. Beachten Sie, dass nicht alle JDK-Klassen Quellen bereitgestellt haben. Einige von ihnen sind nur in binärer Form verteilt.
  • Für manuell hinzugefügte Klassen aus dem Erstellungspfad des Projekts muss die zugehörige Quelle manuell angehängt werden. Die Quelle kann sich in einer Zip- oder JAR-Datei, im Arbeitsbereich oder im Dateisystem befinden. Eclipse scannt die Zip-Datei, sodass sich Ihre Quellen beispielsweise nicht im Stammverzeichnis der Archivdatei befinden müssen.
  • Klassen aus Abhängigkeiten, die von anderen Plugins stammen (Maven, PDE usw.). In diesem Fall hängt es vom Plugin ab, wie die Quelle bereitgestellt wird.
    • PDE setzt voraus, dass jedes Plugin über ein entsprechendes XXX.source -Paket verfügt, das die Quelle des Plugins enthält. Weitere Informationen finden Sie hier und hier .
    • m2Eclipse kann Quellen und Javadocs für Maven-Abhängigkeiten abrufen, wenn diese verfügbar sind. Diese Funktion sollte aktiviert sein m2Eclipse Einstellungen (die Option wurde so benannt wie " Download Quelle und Javadocs ".
    • Für andere Plugins müssen Sie deren Dokumentation konsultieren
  • Klassen, die aus Ihrem Projekt geladen werden, werden automatisch mit den Quellen aus dem Projekt abgeglichen.

Aber was ist, wenn Eclipse immer noch vorschlägt, dass Sie eine Quelle anfügen, auch wenn ich meine Klassen und ihre Quellen korrekt festgelegt habe:

Dies bedeutet fast immer, dass Eclipse die Klasse an einem anderen Ort als erwartet findet. Untersuchen Sie Ihren Quellensuchpfad, um festzustellen, woher möglicherweise die falsche Klasse stammt. Aktualisieren Sie den Pfad entsprechend Ihren Ergebnissen.

Eclipse findet überhaupt nichts, wenn der Haltepunkt erreicht ist:

Dies ist der Fall, wenn der Quellensuchpfad nicht die Klasse enthält, die derzeit in der Laufzeit geladen ist. Selbst wenn sich die Klasse im Arbeitsbereich befindet, kann sie für die Startkonfiguration unsichtbar sein, da Eclipse den Pfad für die Quellensuche genau befolgt und nur die Abhängigkeiten des Projekts anfügt, für das derzeit ein Debugging durchgeführt wird.

Eine Ausnahme bilden die Debugging-Bundles in PDE. In diesem Fall findet Eclipse die Klasse automatisch im Arbeitsbereich, auch wenn sie im Quellensuchpfad nicht verfügbar ist, da die Laufzeit aus mehreren Projekten besteht, für die keine Abhängigkeiten deklariert werden müssen.

Ich kann die Variablen nicht sehen, wenn ich auf einen Haltepunkt treffe, oder es wird nur die Quelle geöffnet, aber die Haltepunktlinie wird nicht ausgewählt:

Dies bedeutet, dass in der Laufzeit entweder die JVM oder die Klassen selbst nicht über die erforderlichen Debuginformationen verfügen. Bei jeder Kompilierung von Klassen können Debug-Informationen angehängt werden. Um den Speicherplatz der Klassen zu reduzieren, werden diese Informationen manchmal weggelassen, was das Debuggen eines solchen Codes zu einem Problem macht. Sie haben nur die Möglichkeit, bei aktiviertem Debug eine Neukompilierung durchzuführen.

Der Eclipse-Quelltext-Viewer zeigt andere Zeilen als die tatsächlich ausgeführten:

Es kann manchmal zeigen, dass auch ein leerer Raum ausgeführt wird. Dies bedeutet, dass Ihre Quellen nicht mit Ihrer Laufzeitversion der Klassen übereinstimmen. Auch wenn Sie der Meinung sind, dass dies nicht möglich ist, sollten Sie die richtigen Quellen einrichten. Oder Ihre Laufzeit entspricht Ihren letzten Änderungen, je nachdem, was Sie versuchen.

45
Danail Nachev

Von http://www.coderanch.com/t/587493/vc/Debugging-Eclipse-Source

"Wenn Sie im Debug-Modus arbeiten, klicken Sie mit der rechten Maustaste auf den laufenden Thread (in der Registerkarte" Threads ") und wählen Sie Quellensuche bearbeiten. An dieser Stelle sollten Sie das erforderliche Projekt/JAR hinzufügen können, das Ihren Quellcode enthält."

Ich habe mein aktuelles Projekt auf diese Weise hinzugefügt und es hat mein Problem gelöst

9
Vering

Ich hatte ein ähnliches Problem mit meinem Eclipse-Maven-Projekt. Ich habe lange mit diesem Thema gekämpft und dann versucht, das Projekt neu aufzubauen 

mvn clean Eclipse:eclipse

und es hat geholfen.

9
krzysiek.ste

Entfernen Sie die vorhandene Debug-Konfiguration und erstellen Sie eine neue. Das sollte das Problem lösen.

Ich stand vor dem gleichen Problem und folgte den folgenden Schritten.

Window => Preferences => Java => Installed JREs,

enter image description here

Sie sehen im obigen Bildschirm, dass Jre1.8.0_12 ausgewählt ist.

wählen Sie die von Ihnen verwendete JRE aus und klicken Sie auf Edit. Jetzt sollten Sie den folgenden Bildschirm sehen.

enter image description here

Klicken Sie auf das Verzeichnis, suchen Sie nach Jdk. Es sollte wie unten angezeigt aussehen. enter image description here

klicken Sie auf OK und fertig

4
Varun

Ich hatte das Problem, dass meine Eclipse den Quellcode meines Projekts nicht debuggen konnte. Ich habe eine leere Seite mit "Quellcode-Knoten gefunden" erhalten. 

Bitte klicken Sie auf die Schaltfläche Quellcode anfügen. Dann löschen Sie den "Standard" -Ordner, klicken Sie auf "Hinzufügen" und gehen Sie zu Ihrem Projektspeicherort und fügen Sie ihn hinzu. Das hat bei mir funktioniert

3
avase

Offensichtlich weiß Eclipse nicht automatisch, wo sich der Quellcode für die abhängigen Gläser befindet. Es ist nicht klar, warum der Debugger nach dem Anhängen der Quelle keine Variablen untersuchen konnte. Eine Möglichkeit ist eine falsche/inkompatible Quelle.

Vorausgesetzt, Sie haben ein Maven-Projekt und die Quellen der Abhängigkeiten sind heruntergeladen und im lokalen Repository verfügbar. Möglicherweise möchten Sie m2Eclipse , das Maven-Eclipse-Plugin, installieren und prüfen, ob dies zur Lösung Ihres Problems beiträgt.

2
Raghuram

In meinem Fall unter "Quelle anhängen" habe ich das andere Maven-Projektverzeichnis im Bereich "Konfiguration der Quellanhänge" hinzugefügt. Das Hinzufügen der neuesten Version aus dem m2-Repository funktioniert nicht. Alle Klassen des anderen Maven-Projekts konnten nicht geöffnet werden. 

 enter image description here

Hier testete mein anderes Maven-Projekt alle Java-Quellen. 

1
Lucky

Möglicherweise verfügt der Quellcode über eine Abhängigkeit, auf die Eclipse zugreifen kann. Eclipse kennt den Quellcode für dynamisch geladenen Code jedoch nicht. Z.B. durch Maven.

Im Falle von Maven empfehle ich die Verwendung des Run-Jetty-Run-Plugins:

http://code.google.com/p/run-jetty-run/

Als Workaround können Sie mit dem Debugger auch eine Verbindung zu einer laufenden JVM herstellen, und Sie sehen den Code . Alternativ können Sie das Dynamic Source Lookup-Plugin für Eclipse von hier aus verwenden:

https://github.com/ifedorenko/com.ifedorenko.m2e.sourcelookup

Leider hat es mir nicht geholfen, da es Probleme mit Windows-Pfaden mit Leerzeichen gibt.

Ich habe eine Verbesserungsanfrage an Eclipse Bugzilla gestellt und wenn Sie der Meinung sind, dass "Quelle nicht gefunden" für immer verschwunden sein sollte, stimmen Sie bitte hier ab:

https://bugs.Eclipse.org/bugs/show_bug.cgi?id=384065

Vielen Dank!

Sasa

1
ssasa

In meinem Fall hat es auch nach dem Bearbeiten der Quellensuche und dem Hinzufügen des Projekts nicht funktioniert. Ich habe den Erstellungspfad des Projekts konfiguriert.

 enter image description here

Danach habe ich JRE System Library ausgewählt und es hat funktioniert.

 enter image description here

1
Germa Vinsmoke

Klicken Sie im Debug-Modus auf Quellensuche bearbeiten, nachdem der Thread angehalten wurde. An dieser Stelle sollten wir in der Lage sein, das erforderliche Projekt/jar hinzuzufügen, das Ihren Quellcode enthält ..__ Nachdem ich mein aktuelles Projekt auf diese Weise hinzugefügt habe, wurde mein Problem gelöst. Vielen Dank

0
Yoga

Nun, hier hat sich was für mich herausgestellt. Ich habe jede mögliche Lösung von StackOverflow ausprobiert. Ich habe versucht, meinen Quellspeicherort im Debug-Menü zu ändern, ich habe das m2e Eclipse-Plugin installiert, von Embedded Maven gewechselt und den Run-Jetty-Run installiert, und es hat nichts funktioniert. Nun möchte ich einreden, dass ich nicht versucht habe, den Quellcode einer externen Person anzuzeigen. Ich wollte nur meinen eigenen Code sehen, aber jedes Mal, wenn ich in meine Methoden, die ich in MEIN Projekt geschrieben habe, "eingriff", bekam ich den Fehler "Quelle jetzt gefunden".

Nachdem ich endlich einen Experten gefragt hatte, war mein Problem, dass Eclipse als erstes einen ClassLoader aufrief, den Sie aus dem Debug-Stack entnehmen können. Alles, was ich tun musste, war F6 (Schritt vorbei), und dann brachte ich mich wieder zu meinem ursprünglichen Anruf und dann zu F5 (Einstieg). Und da war mein Code. Seufz ... eine so einfache Lösung, aber eine Stunde vergeudet.

0
Chris C

das hat für mich funktioniert

klicken Sie mit der rechten Maustaste auf Projekt -> Eigenschaften -> Bereitstellungsassemblierung -> fügen Sie Ihre Dose hinzu

0
TajnosAgentos

Ich hatte das gleiche Problem. In meinem Fall habe ich Window-Preferences-Java-Debug deaktiviert [Ausführung bei nicht erfassten Ausnahmen anhalten]. Dann zeigte mir die Konsole den korrekten Fehler: Mein MySQL-Benutzer hatte keine Zugriffsrechte auf die Datenbank. Gemäß diesem Thema.

0
Alex

Info: Dies ist eine mögliche Lösung, wenn Sie maven (pom.xml) mit einigen Projekten verwenden.

Wenn Sie mit maven arbeiten, vergewissern Sie sich, welche Version Sie in der entsprechenden Datei pom.xml verwenden (z. B. 1.0.1-SNAPSHOT). Es kann sein, dass Ihr Code auf dem neuesten Stand ist, aber auf Ihrem Pom. XML-Abhängigkeiten machen immer noch die alten JARs/Snapshots (mit dem alten Code). 

Das Problem finden:

  • Versuchen Sie, die entsprechende Datei zu debuggen. 
  • Setzen Sie daher einen Haltepunkt im entsprechenden Codebereich. 
  • Wenn "Quelle nicht gefunden" angezeigt wird, stellen Sie sicher, dass Sie das richtige Projekt einbinden (in dem sich die .Java-Datei befindet). 
  • Die kompilierte .class-Datei wird im Editor IDE geöffnet.
  • Klicken Sie auf "Mit Editor verknüpfen", um den entsprechenden JAR/Snapshot zu finden. 
  • Stellen Sie nun sicher, dass dieser JAR der aktuellste ist. Möglicherweise gibt es einen neueren. Schreiben Sie in diesem Fall die aktuellste Versionsnummer in die Datei pom.xml.
  • Führen Sie dann ein Maven-Update und -Erstellen (z. B. "mvn clean install -U") im rechten Projektverzeichnis durch.
0
Birol Efe

In meinem Fall stimmte die Maven-Version des anderen referenzierten Projekts nicht mit der Version des Testprojekts überein. Sobald sie dasselbe waren, verschwand das Problem.

0
maarten

Wenn Sie durch automatischen Download Quellcode an eine JAR anhängen möchten, versuchen Sie es mit diesem Eclipse-Plugin Java Source Attacher

enter image description here

0
KrishPrabakar

Für Anfänger, 

Möglicherweise handelt es sich bei der JAR-Datei um einen Teil des Projekts, den Sie noch nicht in den Eclipse-Arbeitsbereich aufgenommen haben.

Dazu müssen Sie den Projektnamen der JAR-Datei kennen. Beispiel: Die Datei abc - 18.0.0-SNAPSHOT.jar bedeutet, dass das Projekt in Ihrem Arbeitsbereich enthalten ist ist abc .

0
Shobhit Mittal

In meinem Fall mit Tomcat-Projekten habe ich das Projekt hier überprüft: Fenster - Voreinstellungen - Tomcat - Quellpfad - Java-Projekte zum Quellpfad hinzufügen

0
user3132194

Ich hatte ein verwandtes Problem im Zusammenhang mit dem Glassfish-Server-Debugging in Eclipse .. __ Dies wurde durch Laden des Quellcodes aus einem anderen Repository (Wechsel von SVN zu GitHub) verursacht. Dabei wurden vom Glassfish-Server die falsch kompilierten Klassen verwendet, und daher waren Quelle und Laufzeit nicht synchron mit Haltepunkten in leeren Zeilen.

Um dieses Problem zu lösen, benennen Sie den obersten Ordner des Klassenverzeichnisses um oder löschen Sie ihn. Dann erstellt Glassfish die gesamte Klassenverzeichnisstruktur neu, einschließlich der Aktualisierung der Klassendateien mit der korrekt kompilierten Version.

Das Klassenverzeichnis befindet sich in:/workspace/glassfish3122eclipsedefaultdomain/eclipseApps/<Ihre Webanwendung>/WEB-INF/classes

0
user3035873

Klick -> Quellensuchpfad bearbeiten

danach 

Klicken Sie auf -> Hinzufügen, wählen Sie schließlich Java-Projekt aus und wählen Sie den Projektpfad aus.

Quelle: https://www.youtube.com/watch?v=IGIKPY6q1Qw

0
Oguzhan Cevik

Wenn Sie sich auf Eclipse oder STS befinden, installieren und verwenden Sie GC (GrepCode Plugin). Einige Zeit brauchen Sie nicht, die ZIP-Quelldatei in den Projektpfad einzufügen. GrepCode funktioniert also einwandfrei.

0
danielad

Ich hatte das gleiche Problem mit Eclipse 2019-03 (4.11.0) und konnte dieses Problem nur lösen, indem ich das Debugging über Remote-Debugging durchführte, anstatt es direkt im Debug-Modus zu starten.

0
Kai

Ich hatte dieses Problem, als ich an Java-Code arbeitete, um eine Excel-Datei zu verarbeiten, die einen Datensatz enthielt, und dann in eine CSV-Datei konvertiert Dateien selbst. Nachdem Sie die benötigten JAR-Dateien nacheinander heruntergeladen haben (ältere Versionen) und sie zu meinem Projekt hinzufügen, ist der Fehler "Quelle nicht gefunden" verschwunden.

0
simin

Gehen Sie zur Debug-Konfiguration in Eclipse und verwenden Sie das folgende Ziel, um Ihre Anwendung auszuführen.

-Dmaven.surefire.debug

z.B 

-Dmaven.surefire.debug exec: Java 

0