web-dev-qa-db-fra.com

Débogage Java Eclipse: source introuvable

Lors du débogage d’une application Java dans Eclipse, je reçois une erreur " Source non trouvée " dans deux cas:

  • Accéder à un fichier d'un autre projet déjà importé
  • Accéder à un fichier dans un référentiel Maven installé

Les fichiers sont là, mais Eclipse n’y entrera pas, mais un bouton pour " attacher la source "

J'ai essayé d'attacher (qui a ouvert une boîte de dialogue pour définir une variable?!) Et Eclipse a sauté au fichier, mais le débogueur n'a pas pu inspecter les variables. De plus, attacher manuellement la source pour chaque dépendance n'est pas pratique, car dans mon cas, il existe des milliers de fichiers de dépendance.

Je suis nouveau dans Eclipse\Java, alors une explication de la raison pour laquelle cela se produit + comment la résoudre aiderait beaucoup!

162
Jonathan

Le débogage Eclipse fonctionne avec la classe réellement chargée par le programme.

Les symptômes que vous décrivez semblent que la classe en question n’a pas été trouvée dans le projet, mais dans un fichier jar de distribution sans informations de débogage trouvées avant le projet avec lequel vous travaillez.

Cela peut se produire pour plusieurs raisons, mais regardez l'emplacement où les classes présentant ce comportement sont trouvées (regardez dans le volet de navigation pour l'identifier). Vous devrez probablement modifier le chemin de génération du projet pour éviter d'utiliser ce fichier JAR et pour que la machine virtuelle Java utilise le projet à la place.

EDIT: Notez qu’à partir de 2018, il est courant d’utiliser un framework de construction comme Maven, où le chemin de compilation est géré par le plug-in m2e. Ce problème devrait donc être très moins fréquent que lorsque la question a été posée.

Juste 3 étapes pour configurer Eclipse IDE:

Remarque: Après la mise à jour des chemins de recherche source, vous devrez arrêter et redémarrer votre session de débogage. Sinon, le fichier avec la source manquante continuera d'afficher "source manquante".

Editer la recherche source ____Sélectionnez la commande Editer la recherche source ... [Editer la recherche source] pour ouvrir la boîte de dialogue Chemin source, qui vous permet de modifier le chemin de recherche source de la cible de débogage sélectionnée.

enter image description here

enter image description here

enter image description here

IMPORTANT Redémarrez Eclipse après cette dernière étape.

252
Douglas Frari

Le symptôme décrit parfaitement le cas où la classe trouvée n'a pas de source associée (ou assignée).

  • Vous pouvez associer les sources des classes JDK dans Préférences> Java> JRE installé. Si JRE (pas JDK) est détecté comme JRE par défaut à utiliser, vos classes JDK n'auront pas de sources attachées. Notez que toutes les classes du JDK n’ont pas fourni de sources, certaines d’entre elles ne sont distribuées que sous forme binaire.
  • Les classes du chemin de génération du projet, ajoutées manuellement, nécessitent que vous associez manuellement la source associée. La source peut résider dans un fichier Zip ou JAR, dans l'espace de travail ou dans le système de fichiers. Eclipse analysera le fichier Zip, de sorte que vos sources ne doivent pas nécessairement se trouver à la racine du fichier d’archive, par exemple.
  • Les classes, des dépendances provenant d'autres plugins (maven, PDE, etc.). Dans ce cas, c'est au plugin de décider comment la source sera fournie .
    • PDE nécessitera que chaque plug-in dispose de l'ensemble correspondant XXX.source, qui contient la source du plug-in. Plus d'informations peuvent être trouvées ici et ici .
    • m2Eclipse peut récupérer les sources et les javadocs pour les dépendances Maven si elles sont disponibles. Cette fonctionnalité doit être activée les préférences m2Eclipse (l’option s’appelle "Télécharger la source et les javadocs".
    • Pour les autres plugins, vous devrez consulter leur documentation
  • Les classes chargées à partir de votre projet sont automatiquement associées aux sources du projet.

Mais qu'arrive-t-il si Eclipse suggère toujours d'attacher une source, même si je règle correctement mes classes et leurs sources:

Cela signifie presque toujours qu'Eclipse trouve la classe dans un endroit différent de celui auquel vous vous attendez. Inspectez votre chemin de recherche source pour voir où il pourrait obtenir la mauvaise classe. Mettez à jour le chemin en fonction de vos résultats.

Eclipse ne trouve rien du tout, lorsque le point d'arrêt est atteint:

Cela se produit lorsque le chemin de recherche de source ne contient pas la classe actuellement chargée dans le runtime. Même si la classe est dans l'espace de travail, elle peut être invisible pour la configuration de lancement, car Eclipse suit strictement le chemin de recherche source et attache uniquement les dépendances du projet actuellement débogué.

Les ensembles de débogage dans PDE constituent une exception. Dans ce cas, étant donné que le moteur d'exécution est composé de plusieurs projets, qui ne doivent pas nécessairement déclarer de dépendance, Eclipse recherche automatiquement la classe dans l'espace de travail, même si elle n'est pas disponible dans le chemin de recherche source.

Je ne peux pas voir les variables lorsque je frappe un point d'arrêt ou que cela ouvre simplement la source, mais ne sélectionne pas la ligne du point d'arrêt:

Cela signifie qu'au moment de l'exécution, la JVM ou les classes elles-mêmes ne disposent pas des informations de débogage nécessaires. Chaque fois que les classes sont compilées, des informations de débogage peuvent être jointes. Pour réduire l'espace de stockage des classes, cette information est parfois omise, ce qui complique le débogage de ce code. Votre seule chance est d'essayer de recompiler avec le débogage activé.

Le visualiseur source Eclipse affiche des lignes différentes de celles exécutées:

Cela peut parfois montrer que des espaces vides sont également exécutés. Cela signifie que vos sources ne correspondent pas à votre version d'exécution des classes. Même si vous pensez que ce n'est pas possible, c'est bien le cas, assurez-vous donc de configurer les sources correctes. Ou votre exécution correspond à vos dernières modifications, en fonction de ce que vous essayez de faire.

44
Danail Nachev

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

"Lors de l'exécution en mode débogage, cliquez avec le bouton droit sur le thread en cours d'exécution (dans l'onglet Threads) et sélectionnez Modifier la recherche de source. À ce stade, vous devriez pouvoir ajouter le projet/jar nécessaire contenant votre code source."

J'ai ajouté mon projet actuel de cette manière et cela a résolu mon problème

9
Vering

J'ai eu le même problème avec mon projet Eclipse Maven. Je me suis battu avec cette question assez longtemps alors j'ai essayé de reconstruire le projet avec 

mvn clean Eclipse:eclipse

et ça a aidé.

9
krzysiek.ste

Supprimez la configuration de débogage existante et créez-en une nouvelle. Cela devrait résoudre le problème.

5

Je faisais face au même problème, j'ai suivi les étapes ci-dessous.

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

enter image description here

Vous voyez dans l'écran ci-dessus que Jre1.8.0_12 est sélectionné.

sélectionnez le JRE que vous utilisez et cliquez sur Edit. Vous devriez maintenant voir l'écran ci-dessous.

enter image description here

Cliquez sur le répertoire, recherchez Jdk, il devrait ressembler à l'écran ci-dessous. enter image description here

cliquez ok, et c'est fait

4
Varun

J'ai eu le problème que mon Eclipse ne déboguait pas le code source de mon projet. Je recevais une page vierge avec "noeud de code source trouvé". 

Veuillez cliquer sur le bouton Joindre le code source. Supprimez ensuite le dossier "par défaut", puis cliquez sur Ajouter, accédez à l'emplacement de votre projet et joignez-le. Cela a fonctionné pour moi

3
avase

Evidemment, Eclipse ne sait pas automatiquement où se trouve le code source des fichiers jar dépendants. Il n’est pas clair pourquoi le débogueur n’a pas pu inspecter les variables une fois la source attachée. Une possibilité est une source incorrecte/incompatible.

En supposant que vous avez un projet maven et que les sources des dépendances sont téléchargées et disponibles dans le référentiel local, vous pouvez installer m2Eclipse , le plugin maven Eclipse et voir si cela vous aide à résoudre votre problème.

2
Raghuram

Dans mon cas, dans "Attach Source", j'ai ajouté l'autre répertoire de projet maven dans le panneau "Configuration de la pièce jointe source". L'ajout de la dernière version du fichier jar à partir du référentiel m2 ne fonctionne pas. Toutes les classes de l'autre projet maven n'ont pas pu s'ouvrir. 

 enter image description here

Ici test était mon autre projet maven contenant toutes les sources Java. 

1
Lucky

Vous pourriez avoir le code source d'une dépendance accessible à Eclipse. Mais Eclipse ne connaît pas le code source du code chargé dynamiquement. Par exemple. par Maven.

Dans le cas de Maven, je vous recommande d'utiliser le plugin run-jetty-run:

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

Pour contourner le problème, vous pouvez également vous connecter à une machine virtuelle Java en cours d’exécution avec le débogueur et voir le code . Vous pouvez également utiliser le plugin Dynamic Source Lookup pour Eclipse à partir d’ici:

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

Malheureusement, cela ne m'a pas aidé car il y a des problèmes avec les chemins Windows avec des espaces.

J'ai rempli une demande d'amélioration sur Eclipse Bugzilla et si vous acceptez le problème, "La source introuvable" devrait disparaître pour toujours, merci de voter pour cela ici:

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

Merci!

Sasa

1
ssasa

Dans mon cas, même après avoir modifié la recherche de source et ajouté le projet, cela n'a pas fonctionné. J'ai configuré le chemin de génération du projet.

 enter image description here

Après cela, j'ai sélectionné JRE System Library et cela a fonctionné.

 enter image description here

1
Germa Vinsmoke

Lors de l'exécution en mode débogage, cliquez sur Modifier la recherche source après avoir été suspendu du fil. À ce stade, nous devrions pouvoir ajouter le projet/jar nécessaire contenant votre code source . Après avoir ajouté mon projet actuel de cette manière, cela a résolu mon problème. Merci

0
Yoga

Eh bien, voici ce qui a fonctionné pour moi. J'ai essayé toutes les solutions possibles sur StackOverflow. J'ai essayé de changer mon emplacement source dans le menu de débogage, j'ai installé le plugin m2e Eclipse, j'ai changé de Maven intégré et j'ai installé le run-jetty-run et rien n'a fonctionné. Maintenant, je tiens à préciser que je n'essayais pas de visualiser le code source d'une personne externe, je voulais simplement voir mon code OWN, mais chaque fois que j'intervenais dans les méthodes que j'avais écrites et qui étaient dans mon projet, j'avais le Erreur "Source trouvée".

Après avoir finalement demandé à un expert, mon problème était que la première chose que faisait Eclipse était d’appeler un chargeur de classe, ce que vous pouvez voir à partir de la pile de débogage. Tout ce que je devais faire était F6 (passer) puis cela me ramena à mon appel initial et ensuite F5 (entrer). Et il y avait mon code. Soupir ... une solution simple mais une heure perdue.

0
Chris C

cela a fonctionné pour moi

clic droit sur projet -> Propriétés -> Assemblage de déploiement -> ajouter votre jar

0
TajnosAgentos

J'ai eu le même problème. Dans mon cas, j'ai désactivé Window-Preferences-Java-Debug [Suspendre l'exécution sur des exceptions non capturées]. Ensuite, la console m'a montré l'erreur correcte: mon utilisateur MySql n'avait pas les privilèges pour accéder à la base de données. Selon ce sujet.

0
Alex

Info: Ceci est une solution possible lorsque vous utilisez maven (pom.xml) avec quelques projets.

Si vous travaillez avec maven, assurez-vous de la version que vous utilisez dans le fichier pom.xml correspondant (par exemple, 1.0.1-SNAPSHOT) ..__ Il est possible que votre code soit à jour, mais votre pom. Les dépendances XML continuent à utiliser les anciens JAR/Snapshots (avec l'ancien code). 

Trouver le problème:

  • Essayez de déboguer le fichier correspondant. 
  • Par conséquent, définissez un point d'arrêt dans la zone de code appropriée. 
  • Lorsque "source non trouvée" apparaît, veillez à effectuer la liaison dans le bon projet (où se trouve le fichier .Java). 
  • Le fichier de compilation .class s’ouvre dans l’éditeur IDE.
  • Cliquez sur "Lien avec l'éditeur" pour trouver le fichier JAR/Snapshot correspondant. 
  • Assurez-vous maintenant que ce fichier JAR est le plus récent. Peut-être il y en a un plus récent. Dans ce cas, écrivez le numéro de version le plus récent dans le fichier pom.xml.
  • Effectuez ensuite une mise à jour et une construction maven (par exemple, "mvn clean install -U") dans le bon répertoire de projet.
0
Birol Efe

Dans mon cas, la version Maven de l'autre projet référencé ne correspond pas à la version du projet test. Une fois qu'ils étaient identiques, le problème a disparu.

0
maarten

Si vous souhaitez attacher du code source à un fichier JAR par téléchargement automatique, utilisez ce plugin Eclipse Java Source Attacher

enter image description here

0
KrishPrabakar

Pour les débutants, 

Il est possible que le fichier jar fasse partie du projet que vous n'avez pas encore inclus dans l'espace de travail Eclipse.

Pour cela, vous devez connaître le nom du projet du fichier jar . Par exemple, son abc - 18.0.0-SNAPSHOT.jar, cela signifie que le projet que vous êtes censé inclure dans votre espace de travail est abc .

0
Shobhit Mittal

Dans mon cas avec les projets Tomcat, j’ai vérifié le projet ici: Fenêtre - Préférences - Tomcat - Chemin source - Ajouter des projets Java au chemin source

0
user3132194

J'ai eu un problème lié au débogage du serveur Glassfish dans Eclipse . Cela a été provoqué par le chargement du code source depuis un référentiel différent (passage de SVN à GitHub). Au cours du processus, le serveur Glassfish a utilisé les classes compilées incorrectes. Par conséquent, la source et le temps d’exécution ne sont pas synchronisés avec les points de rupture apparaissant sur les lignes vides.

Pour résoudre ce problème, renommez ou supprimez le dossier principal du répertoire de classes et Glassfish recréera l’ensemble de l’arborescence du répertoire de la classe, y compris la mise à jour des fichiers de classe avec la version correctement compilée.

Le répertoire de classes se trouve dans:/workspace/glassfish3122eclipsedefaultdomain/eclipseApps/<votre application Web>/WEB-INF/classes

0
user3035873

Cliquez sur -> Modifier le chemin de recherche source

ensuite 

Cliquez sur -> Ajouter, puis sélectionnez le projet Java et sélectionnez le chemin du projet.

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

0
Oguzhan Cevik

Si vous utilisez Eclipse ou STS, installez et utilisez GC (plug-in GrepCode). Il est parfois inutile de joindre le fichier source .Zip au chemin du projet pour que GrepCode fonctionne correctement.

0
danielad

J'ai eu le même problème avec Eclipse 2019-03 (4.11.0) et je n'ai pu le résoudre qu'en effectuant le débogage via le débogage distant au lieu de le lancer directement en mode débogage.

0
Kai

J'ai eu ce problème alors que je travaillais sur du code Java pour traiter un fichier Excel contenant un ensemble de données, puis le convertir en fichier .csv, j’ai essayé de répondre à ce message, mais ils ne fonctionnaient pas . Le problème était le fichier jar fichiers eux-mêmes. après avoir téléchargé les fichiers jar nécessaires un par un (anciennes versions) et les avoir ajoutés à mon projet, l'erreur "source non trouvée" a disparu . Peut-être pouvez-vous vérifier vos fichiers jar . espérons que cela vous aidera.

0
simin

Accédez à la configuration de débogage dans Eclipse et utilisez l'objectif ci-dessous pour exécuter votre application.

-Dmaven.surefire.debug

par exemple 

-Dmaven.surefire.debug exec: Java 

0
Vishvesh Phadnis