398 Stimmen

Eclipse - Haltepunkt kann wegen fehlender Zeilennummernattribute nicht installiert werden

Ich erhalte diesen seltsamen Fehler in Eclipse, wenn ich versuche, einen Haltepunkt zu setzen.

Unable to insert breakpoint Absent Line Number Information

Ich habe das Kontrollkästchen in den Compiler-Optionen aktiviert, aber ohne Erfolg.

0voto

Witold Kaczurba Punkte 8919

Ich hatte ein ähnliches Problem auf Spring MVC + Maven Projekt; und verbrachte 2 Stunden versuchen, herauszufinden, warum Zielordner nicht mit Klassen mit Informationen über Zeilen aktualisiert werden.

Ich schlage vor, dass Sie alles bereinigen und sicherstellen, dass alle Klassen aus dem Ordner gelöscht werden, bevor Sie mit einem Build fortfahren.

  1. Vergewissern Sie sich, dass in den Projekteigenschaften > Java Compiler die Option "Zeilennummernattribute zu generierten Klassenfeldern hinzufügen (vom Debugger verwendet)" aktiviert ist.
  2. Das gesamte Projekt reinigen. . (Menü > Projekt > Bereinigen...) Stellen Sie sicher, dass der Zielordner leer ist.
  3. Projekt erstellen (Menü > Projekt > Projekt erstellen)
  4. Stellen Sie sicher, dass neue Klassen in Ihrem Zielverzeichnis generiert werden.
  5. Führen Sie Debug aus; wenn Sie auf einem WebServer laufen - stellen Sie sicher, dass Sie Ihren Webserver im "Debug"-Modus laufen lassen.

Im Zweifelsfall - ob kompilierte .class-Dateien Zeilennummern enthalten oder nicht - öffnen Sie die .class-Dateien in Eclipse. Eclipse wird die Dateien dekompilieren und Ihnen mitteilen, ob Zeilennummern vorhanden sind oder nicht.

enter image description here

0voto

Binita Bharati Punkte 3866

Wenn jemand versucht, den Java-Quellcode zu debuggen, dann ist dies die einzige Lösung, die bei mir funktioniert hat. Die meisten der oben genannten Antworten sprechen über die Einstellung der Compiler-Option, um Zeilennummern zu generieren, aber wenn Sie Java-Quellcode debuggen möchten (z. B. java.util.HashMap), dann funktionieren die oben genannten Optionen möglicherweise nicht für Sie. Das liegt daran, dass das Projekt, in dem Sie den Quellcode debuggen wollen, die Option Java Build Path --> Library --> JRE System Library die auf den jre jar anstelle des jdk jar. Die darin gebündelten Klassen jre jar bereits mit einer bestimmten Option vorkompiliert wurden, werden die Einstellungen der Compileroption nicht berücksichtigt. Die Lösung besteht darin, Ihr Projekt neu zu konfigurieren, um die JRE System Library weisen auf die jdk Krug. Die Klassen in Ihrem jdk jar wird die Einstellungen der Compiler-Optionen berücksichtigen. Sobald Sie also Ihr Projekt aktualisieren, werden die JRE System Library um auf den jdk jar, wird das Debuggen von Java-Quellcode funktionieren.

0voto

crazy horse Punkte 423

Ich habe alles getan, was oben aufgeführt ist, während ich die Jars kompiliert/gebaut habe - und hatte immer noch das gleiche Problem.

Letztendlich haben die unten aufgeführten jvmarg-Änderungen beim Starten des Servers bei mir funktioniert:

  1. Entfernt/kommentiert eine Reihe von jvm-Args, die sich auf javaagent und bootclasspath beziehen.

<!-- jvmarg value="${agentfile}" /-->

<!-- jvmarg value="-javaagent:./lib/foobar /-->

<!-- jvmarg value="-Xbootclasspath/a:/foo /-->

  1. Die folgende Zeile wurde aktiviert/unkommentiert:

<jvmarg value="-Xdebug" />

Wenn ich dann den Server starte, kann ich meine Haltepunkte erreichen. Ich vermute, dass der Javaagent irgendwie die Fähigkeit von Eclipse, Zeilennummern zu erkennen, beeinträchtigt hat.

0voto

Titi Punkte 103

Wie behebt man einen Haltepunktfehler beim Debuggen in Eclipse? Ersetzen Sie nur die vorhandenen Zeilen durch diese.

    eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.8

0voto

jfajunior Punkte 1105

Wir haben bereits sehr nützliche Informationen, um dieses Problem zu lösen, aber in meinem speziellen Fall bestand das Problem darin, dass, als ich mein Projekt aus dem Repository aktualisierte, neue Klassen mit dem kompilierten Quellcode aus dem neuesten Code erzeugt wurden. Das Problem ist, dass ich vergessen habe, die Versionen der Projekte in meinen POM-Dateien zu ändern, und da die Haltepunkte auf den neuen Code gesetzt wurden und die POM-Dateien immer noch auf alte Versionen verwiesen, die in den JAR-Dateien einer früheren Kompilierung vorhanden waren, wurden die Klassen aus den JAR-Dateien ausgewählt und nicht die Klassen aus dem neuen Code.

Um dieses Problem zu lösen, musste ich lediglich die Versionen in der POM-Datei des Hauptprojekts aktualisieren, den Quellcode bereinigen und neu kompilieren und schließlich die Umgebung aktualisieren. Ich hoffe, dass dies für jemand anderen nützlich sein kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X