Eclipse java debugging: bron niet gevonden

Tijdens het debuggen van een Java-app in eclipse krijg ik in twee gevallen de foutmelding “Bron niet gevonden“:

  • Ingaan op een bestand in een ander project dat al is geïmporteerd
  • Ingaan op een bestand in een geïnstalleerde maven-repository

De bestanden zijn er, maar Eclipse komt er niet in, in plaats daarvan toont het een knop om “bron bijvoegen

Ik heb geprobeerd een bijlage toe te voegen (waardoor een dialoogvenster werd geopend om een variabele te definiëren?!) en eclipse sprong naar het bestand, maar de debugger kon daar geen variabelen inspecteren. Het handmatig toevoegen van de broncode voor elke afhankelijkheid is ook niet praktisch, omdat er in mijn geval duizenden afhankelijkheidsbestanden zijn.

Ik ben nieuw in eclipse\java, dus een uitleg van waarom dit gebeurt + hoe dit op te lossen zou veel helpen!


Antwoord 1, autoriteit 100%

Eclipse-foutopsporing werkt met de klasse die werkelijk geladenis door het programma.

De symptomen die u beschrijft, klinken alsof de betreffende klasse niet in het project is gevonden, maar in een distributiepot zonder foutopsporingsinformatie gevonden vóórhet project waarmee u werkt.

Dit kan verschillende redenen hebben, maar kijk eens naar de locatie waar de klassen die dit gedrag vertonen zich bevinden (kijk in het navigatievenster om het te identificeren). U zult hoogstwaarschijnlijk het bouwpad van het project moeten wijzigen om het gebruik van deze jar te vermijden en de JVM in plaats daarvan het project te laten gebruiken.

EDIT: Houd er rekening mee dat het vanaf 2018 gebruikelijk is om een build-framework zoals Maven te gebruiken, waarbij het buildpad wordt beheerd door de m2e-plug-in, dus dit probleem zou veel minder frequent moeten zijn dan toen de vraag werd gesteld. Als je Maven en m2e gebruikt, zorg er dan voor dat je Voorkeuren / Maven / “Download Artifact Sources” inschakelt of klik met de rechtermuisknop op het project, Maven / “Download Sources”.


Antwoord 2, autoriteit 92%

Slechts 3 stappen om Eclipse IDE te configureren:

Opmerking:Na het bijwerken van de bronzoekpaden, moet u uw foutopsporingssessie stoppen en opnieuw starten. Anders blijft het bestand met de ontbrekende bron “ontbrekende bron” weergeven.

Bron zoeken bewerken
Selecteer de opdracht Edit Source Lookup… [ Edit Source Lookup ] om het dialoogvenster Bronpad te openen, waarmee u wijzigingen kunt aanbrengen in het bronopzoekpad van het geselecteerde doel voor foutopsporing.

BELANGRIJKHerstart Eclipsena deze laatste stap.


Antwoord 3, autoriteit 80%

De symptomen beschrijven perfect het geval wanneer de gevonden klasse geen bijbehorende (of toegewezen) bron heeft.

  • U kunt de bronnen voor JDK-klassen associëren in Voorkeuren > Java > JRE geïnstalleerd. Als JRE (niet JDK) wordt gedetecteerd als standaard JRE die moet worden gebruikt, hebben uw JDK-klassen geen gekoppelde bronnen. Merk op dat niet alle JDK-klassen bronnen hebben geleverd, sommige worden alleen in binaire vorm gedistribueerd.
  • Klassen uit het bouwpad van het project, handmatig toegevoegd, vereisen dat u de bijbehorende bron handmatig toevoegt. De bron kan zich bevinden in een zip- of jar-bestand, in de werkruimte of in het bestandssysteem. Eclipse scant de zip, zodat je bronnen bijvoorbeeld niet in de root van het archiefbestand hoeven te staan.
  • Klassen, van afhankelijkheden afkomstig van andere plug-ins (maven, PDE, etc.). In dit geval is het aan de plug-in hoe de bron wordt verstrekt.
    • PDE vereist dat elke plug-in corresponderende xxx.Bron bundel, die de bron van de plug-in bevat. Meer informatie is te vinden Hier en hier .
    • M2ECLIPSE Kan bronnen en Javadocs ophalen voor Maven-afhankelijkheden als ze beschikbaar zijn. Deze functie moet M2ECLIPSE voorkeuren worden ingeschakeld (de optie is iets genoemd als “Download bron en Javadocs “.
    • Voor andere plug-ins moet u hun documentatie controleren
  • -klassen, die van uw project worden geladen, worden automatisch gekoppeld aan de bronnen van het project.

Maar wat als Eclipse nog steeds suggereert dat u bron bijvoegt, zelfs als ik mijn klassen en hun bronnen correct instelt:

Dit betekent bijna altijd dat Eclipse de klasse van verschillende plaats vindt dan je verwacht. Inspecteer je bron opzoekpad om te zien waar het de verkeerde klasse kan krijgen. Werk het pad overeenkomstig bij op uw bevindingen.

Eclipse vindt helemaal niets, wanneer breekpunt wordt geraakt:

Dit gebeurt, wanneer u Bron Lookup-pad bent, bevat de klasse niet, die momenteel in de runtime is geladen. Zelfs als de klas zich in de werkruimte bevindt, kan het onzichtbaar zijn voor de lanceringconfiguratie, omdat Eclipse het bron-lookup-pad strikt volgt en alleen de afhankelijkheden van het project hecht, dat momenteel wordt gedebugderd.

Een uitzondering is de debuggingbundels in PDE . Omdat de runtime is samengesteld uit meerdere projecten, die afhankelijkheden niet op elkaar niet hoeven te declareren, zal Eclipse de klas automatisch in de werkruimte vinden, zelfs als deze niet beschikbaar is in het Lookup-pad van de bron.

Ik kan de variabelen niet zien wanneer ik een breekpunt raak of het alleen de bron opent, maar selecteert niet de breakpoint-lijn:

Dit betekent dat in de runtime de JVM of de klassen zelf niet de benodigde foutopsporingsinformatie heeft. Elke keer dat de klassen zijn gecompileerd, kan debug-informatie worden bijgevoegd. Om de opslagruimte van de klassen te verkleinen, wordt deze informatie soms weggelaten, waardoor het debuggen van een dergelijke code een pijn is. Je enige kans is om te proberen en het opnieuw compileren van Debug ingeschakeld.

Eclipse Source Viewer toont verschillende lijnen dan die welke daadwerkelijk worden uitgevoerd:

Het kan soms laten zien dat lege ruimte ook wordt uitgevoerd. Dit betekent dat uw bronnen niet overeenkomen met uw runtime-versie van de klassen. Zelfs als u denkt dat dit niet mogelijk is, is het, dus zorg ervoor dat u de juiste bronnen instelt. Of uw runtime komt overeen met uw laatste wijzigingen, afhankelijk van wat u probeert te doen.


Antwoord 4, Autoriteit 19%

van http://www.coderanch.com/t/587493 / vc / debugging-eclipse-source

“Klik bij het uitvoeren van de debugmodus met de rechtermuisknop op de draaidraad (in het tabblad Threads) en selecteer Source LookUp bewerken. Op dit punt moet u het benodigde project / pot dat uw broncode bevat toevoegen.”

Ik heb mijn huidige project op deze manier toegevoegd en het heeft mijn probleem opgelost


Antwoord 5, Autoriteit 17%

Ik had een soortgelijk probleem met mijn Eclipse Maven-project. Ik heb heel lang met dit probleem gevochten toen ik probeerde het project opnieuw op te bouwen met

mvn clean eclipse:eclipse

en het hielp.

Opmerking: het gebruik van deze aanpak verwarren de M2E-plug-in, omdat de twee benaderingen heel verschillend zijn. M2E voegt een virtueel knooppunt toe aan uw project genaamd “Maven-afhankelijkheden” en vraagt ​​Maven alle afhankelijkheden daar toe te voegen.

mvn eclipse:eclipse, aan de andere kant, zal veel individuele vermeldingen in het bestand .classpathmaken. Eclipse zal ze behandelen alsof u handmatig potten aan uw project hebt toegevoegd.

Tenzij u weet hoe het ClassPath in Eclipse werkt, wordt deze aanpak niet aanbevolen.


Antwoord 6, Autoriteit 12%

Ik had geconfronteerd met hetzelfde probleem, ik volgde de balgstappen.

Window = & GT; Voorkeuren = & GT; JAVA = & GT; Geïnstalleerde JRES ,

u ziet in het bovenstaande scherm Jre1.8.0_12is geselecteerd.

Selecteer de JRE die u gebruikt en klik op Bewerken . Nu moet u het balgscherm zien.

Klik op de map, blader naar JDK, het lijkt eruit als het bestaande scherm.

Klik op OK en het is voltooid


Antwoord 7, Autoriteit 10%

Verwijder de bestaande debug-configuratie en maak een nieuwe. Dat zou het probleem moeten oplossen.


Antwoord 8, Autoriteit 8%

Ik had het probleem dat mijn Eclipse de broncode van mijn project niet debuggen. Ik kreeg een lege pagina met "Broncodeknooppunt gevonden".

Klik op de knop Broncode toevoegen. Verwijder vervolgens de map "Standaard" en klik vervolgens op Toevoegen en ga naar uw projectlocatie en bevestig. Dit werkte voor mij


Antwoord 9, Autoriteit 5%

In mijn geval, zelfs na het bewerken van bronopzoeken en het toevoegen van project, heeft het niet gewerkt. Ik heb het bouwpad van het project geconfigureerd.

Daarna heb ik JRE-systeembibliotheek geselecteerd en het werkte.


Antwoord 10, Autoriteit 3%

Blijkbaar weet de Eclipse niet automatisch waar de broncode voor de afhankelijke potten is. Het is niet duidelijk waarom debugger geen variabelen kon inspecteren zodra de bron is bijgevoegd. Eén mogelijkheid is onjuiste / incompatibele bron.

Aangenomen dat u een MAVEN-project hebt en de bronnen van de afhankelijkheden worden gedownload en beschikbaar in de lokale repository, wilt u mogelijk installeren M2ECLIPSE , de plug-in van de Maven Eclipse en zie of dat helpt bij het aanpakken van uw probleem.


Antwoord 11, Autoriteit 3%

klik - & GT; Bron Lookup-pad bewerken

NAUIT

klik - & GT; Voeg uiteindelijk toe Selecteer Java-project en selecteer Projectpad.

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


Antwoord 12, Autoriteit 3%

Geen van de genoemde antwoord werkte voor mij.

Om dit probleem ik moet volgen hieronder stappen op te lossen:

  • Klik met de rechtermuisknop op Java HotSpot (TM) 64 bit server.
  • Selecteer "Edit Source Lookup".
  • Klik op "Toevoegen".
  • Selecteer "File System Directory" in plaats van Java project.
  • Selecteer Root directory van uw project.
  • Controleer "Zoeken in submappen".
  • Klik op OK OK OK.

bedankt.


Antwoord 13, Autoriteit 2%

Je zou kunnen broncode van een afhankelijkheid toegankelijk is voor Eclipse hebben. Maar Eclipse weet niet voor broncode voor code die dynamisch wordt geladen. B.v. door middel van Maven.

In het geval van Maven, raad ik je aan run--steiger lopen plugin te gebruiken:

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

Als tijdelijke oplossing kunt u ook verbinding maken met een lopende JVM met de debugger en je zal de code te zien.
Als alternatief kunt u Dynamic Source Lookup plugin voor Eclipse vanaf hier:

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

Helaas is het niet me geholpen als het heeft problemen met Windows paden met spaties.

Ik heb een verbetering verzoek gevuld op Eclipse Bugzilla en als u dit probleem "Bron niet gevonden" mee eens moet voor altijd verdwijnen, dan kunt u voor stemmen hier:

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

Bedankt!

Sasa


Antwoord 14, Autoriteit 2%

In mijn geval in "Bron bijvoegen", heb ik de andere maven-projectdirectory toegevoegd in het paneel "Bronbijlageconfiguratie". Het toevoegen van de nieuwste versie jar uit de m2-repository werkt niet. Alle klassen van het andere maven-project konden niet worden geopend.

Hier test was mijn andere maven-project met alle Java-bronnen.


Antwoord 15

Ik had hetzelfde probleem. In mijn geval heb ik Window-Preferences-Java-Debug [Uitvoering op niet-afgevangen uitzonderingen opschorten] uitgeschakeld. Vervolgens liet de console me de juiste fout zien: mijn MySql-gebruiker had geen toegangsrechten tot de database. Volgens dit onderwerp.


Antwoord 16

Info: dit is een mogelijke oplossing als je maven (pom.xml) gebruikt voor een paar projecten.

Als je met maven werkt, controleer dan welke versie je gebruikt in de bijbehorende pom.xml (bijv. 1.0.1-SNAPSHOT ).
Het is mogelijk dat uw code up-to-date is, maar uw pom.xml-afhankelijkheden gebruiken nog steeds de oude JAR's/Snapshots (met de oude code).

Het probleem vinden:

  • Probeer het betreffende bestand te debuggen.
  • Stel daarom een breekpunt in het relevante codegebied in.
  • Als "bron niet gevonden"verschijnt, zorg er dan voor dat je bindt in het juiste project (waar het .java-bestand te vinden is).
  • Het compile .class-bestand wordt geopend in de IDE-editor.
  • Klik op "Link met Editor" om de bijbehorende JAR/Snapshot te vinden.
  • Zorg er nu voor dat deze JAR de meest recente is. Mogelijk is er een nieuwere. Schrijf in dat geval het meest recente versienummer in de pom.xml.
  • Voer vervolgens een maven-update uit en bouw (bijv. "mvn clean install -U") in de juiste projectdirectory.

Antwoord 17

Als u eclipse of STS gebruikt, installeer en gebruik dan GC (GrepCode Plugin), soms hoeft u het bron-.zip-bestand niet aan uw projectpad toe te voegen, zodat GrepCode prima voor u werkt.


Antwoord 18

Ik heb een gerelateerd probleem gehad met de Glassfish-serverfoutopsporing in Eclipse.
Dit werd bewerkstelligd door de broncode uit een andere repository te laden (veranderen van SVN naar GitHub). Tijdens het proces werden de verkeerde gecompileerde klassen gebruikt door de Glassfish-server en daarom zouden de bron- en runtime niet synchroon lopen met breekpunten die op lege regels verschijnen.

Om dit op te lossen, hernoemt of verwijdert u de bovenste map van de klassendirectory en Glassfish zal de hele klassendirectory opnieuw maken, inclusief het bijwerken van de klassenbestanden met de correct gecompileerde versie.

De klassenmap bevindt zich in: /workspace/glassfish3122eclipsedefaultdomain/eclipseApps/< uw webtoepassing>/WEB-INF/classes


Antwoord 19

In mijn geval met Tomcat-projecten heb ik het project hier gecontroleerd:
Venster - Voorkeuren - Tomcat - Bronpad - Java-projecten toevoegen aan bronpad


Antwoord 20

In mijn geval kwam de Maven-versie van het andere project waarnaar wordt verwezen niet overeen met de versie van het testproject. Zodra ze hetzelfde waren, verdween het probleem.


Antwoord 21

Als u in de foutopsporingsmodus werkt, klikt u op Bron zoeken bewerken nadat de thread is onderbroken. Op dit punt zouden we in staat moeten zijn om het benodigde project/jar toe te voegen dat uw broncode bevat.
Nadat ik mijn huidige project op deze manier had toegevoegd, was mijn probleem opgelost. Bedankt


Antwoord 22

Als je broncode aan een JAR wilt toevoegen door automatisch te downloaden, probeer dan deze Eclipse-plug-in Java Source Attacher


Antwoord 23

Ik had dit probleem tijdens het werken aan Java-code om het proces uit te voeren op een Excel-bestand met een dataset en het vervolgens te converteren naar een .csv-bestand. Ik probeerde antwoorden op dit bericht, maar ze werkten niet.
het probleem waren de jar-bestanden zelf. nadat ik de benodigde jar-bestanden één voor één (oudere releases) had gedownload en aan mijn project had toegevoegd, verdween de "bron niet gevonden"-fout.
misschien kun je je jar-bestanden controleren.
hoop dat dit zou helpen.


Antwoord 24

dit werkte voor mij

klik met de rechtermuisknop op project -> Eigenschappen -> Implementatie Assemblage -> voeg je pot toe


Antwoord 25

Ga naar Configuratie foutopsporing in eclipse en gebruik het onderstaande doel om uw toepassing uit te voeren.

-Dmaven.surefire.debug

bijv.

-Dmaven.surefire.debug exec:java


Antwoord 26

Nou, dit is wat voor mij werkte. Ik heb elke mogelijke oplossing op StackOverflow geprobeerd die er was. Ik probeerde mijn bronlocatie in het debug-menu te wijzigen, ik installeerde de m2e Eclipse-plug-in, ik veranderde van embedded Maven en ik installeerde de run-jetty-run en niets werkte. Nu zal ik voorbehoud maken dat ik niet probeerde de broncode van een externe persoon te bekijken, ik wilde gewoon mijn EIGEN code zien, maar elke keer dat ik "instapte" in mijn methoden die ik schreef die in MIJN project waren, kreeg ik de Fout 'Bron nu gevonden'.

Na eindelijk een expert te hebben gevraagd, was mijn probleem dat Eclipse als eerste een ClassLoader aanriep, wat je kunt zien aan de debug-stack. Het enige wat ik hoefde te doen was F6 (overstappen) en toen bracht het me terug naar mijn oorspronkelijke oproep en vervolgens F5 (stap in). En daar was mijn code. Zucht... zo'n simpele oplossing maar een uur verspild.


Antwoord 27

Voor beginners,

Het is mogelijk dat het jar-bestand deel uitmaakt van het project dat u nog niet hebt opgenomen in de Eclipse-werkruimte.

Daarvoor moet je de projectnaam van het jar-bestand weten.
Zeg bijvoorbeeld zijn abc-18.0.0-SNAPSHOT.jar, dit betekent dat het project dat u in uw werkruimte zou moeten opnemen abcis.


Antwoord 28

Ik had hetzelfde probleem met eclipse 2019-03 (4.11.0) en ik kon dit alleen oplossen door foutopsporing op afstand uit te voeren in plaats van het rechtstreeks in de foutopsporingsmodus te starten.


Antwoord 29

Bron toevoegen -> Voeg -> toe Extern archief -> selecteer de pot -> openen -> klaar

De vangst is zoek naar de bronnenpot en bevestig deze pot.

de pot eindigt bijvoorbeeld met "-sources" Stax2-api-3.4.1-sources


Antwoord 30

soms gebeuren deze dingen vanwege de versie, ook leuk als je de nieuwste gebruikt
versie in dat geval kan het voorkomen probeer een oudere versie te gebruiken, het zal werken.

Other episodes