Beim Debuggen einer Java-App in Eclipse erhalte ich in zwei Fällen den Fehler " Quelle nicht gefunden ":
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!
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.
IMPORTANT Starten Sie Eclipse nach diesem letzten Schritt erneut.
Die Symptome beschreiben den Fall perfekt, wenn der gefundenen Klasse keine Quelle zugeordnet (oder zugewiesen) ist.
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.
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
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.
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,
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.
Klicken Sie auf das Verzeichnis, suchen Sie nach Jdk. Es sollte wie unten angezeigt aussehen.
klicken Sie auf OK und fertig
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
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.
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.
Hier testete mein anderes Maven-Projekt alle Java-Quellen.
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
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
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.
das hat für mich funktioniert
klicken Sie mit der rechten Maustaste auf Projekt -> Eigenschaften -> Bereitstellungsassemblierung -> fügen Sie Ihre Dose hinzu
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.
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:
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.
Wenn Sie durch automatischen Download Quellcode an eine JAR anhängen möchten, versuchen Sie es mit diesem Eclipse-Plugin Java Source Attacher
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 .
In meinem Fall mit Tomcat-Projekten habe ich das Projekt hier überprüft: Fenster - Voreinstellungen - Tomcat - Quellpfad - Java-Projekte zum Quellpfad hinzufügen
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
Klick -> Quellensuchpfad bearbeiten
danach
Klicken Sie auf -> Hinzufügen, wählen Sie schließlich Java-Projekt aus und wählen Sie den Projektpfad aus.
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.
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.
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.
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