190 votes

Débogage java d'Eclipse : source non trouvée

En déboguant une application java dans eclipse, je reçois un " Source non trouvée erreur " dans deux cas :

  • S'introduire dans un fichier déjà importé dans un autre projet
  • Accéder à un fichier dans un dépôt maven installé

Les fichiers sont là, mais eclipse ne veut pas y accéder, au lieu de cela il montre un bouton pour " joindre la source "

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

Je suis nouveau dans éclipse \java Une explication sur la raison de ce phénomène et sur la façon de le résoudre serait d'une grande aide !

320voto

Douglas Frari Points 438

Il suffit de 3 étapes pour configurer l'IDE Eclipse :

Modifier la recherche de la source Sélectionnez la commande Edit Source Lookup... [ Edit Source Lookup ] pour ouvrir la boîte de dialogue Source Path, qui vous permet d'apporter des modifications au chemin de consultation des sources de la cible de débogage sélectionnée.

enter image description here

enter image description here

enter image description here

8 votes

Modifier la recherche de source a fonctionné pour moi. Merci Douglas Frari

3 votes

Fonctionne comme un charme. Merci !

11 votes

Et si même ça ne marche pas... car ça ne marche pas pour moi.

59voto

Le débogage d'Eclipse fonctionne avec la classe effectivement chargé par le programme.

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

Cela peut se produire pour plusieurs raisons, mais regardez l'emplacement où se trouvent les classes présentant ce comportement (regardez dans le volet de navigation pour l'identifier). Vous devrez probablement modifier le chemin de construction du projet pour éviter d'utiliser cette jarre et faire en sorte que la JVM utilise le projet à la place.

0 votes

Salut merci pour tout mais j'ai trouvé cette réponse plus utile (lien stack over flow)[ stackoverflow.com/questions/5815013/

11 votes

@shareef ce lien concerne la javadoc manquante, pas la source manquante.

0 votes

@ACV Eh bien, oui. Peut-être n'est-il pas aussi élaboré que vous le souhaiteriez - pourriez-vous me faire savoir ce que vous aimeriez voir mieux expliqué ?

47voto

Danail Nachev Points 2863

Les symptômes décrivent 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 (et non JDK) est détecté comme JRE par défaut à utiliser, alors vos classes JDK n'auront pas de sources jointes. Notez que, toutes les classes JDK n'ont pas de sources fournies, certaines d'entre elles sont distribuées sous forme binaire uniquement.
  • Les classes du chemin de construction du projet, ajoutées manuellement nécessitent que vous attachiez 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 zip, de sorte que vos sources ne doivent pas nécessairement se trouver dans le Root du fichier d'archive, par exemple.
  • Classes, de 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 exigera que chaque plugin ait une XXX.source qui contient la source du plugin. Plus d'informations peuvent être trouvées ici et ici .
    • m2eclipse peut récupérer les sources et les javadocs des dépendances Maven si elles sont disponibles. Cette fonctionnalité doit être activée m2eclipse (l'option était nommée quelque chose comme " Télécharger les sources et les javadocs ".
    • Pour les autres plugins, vous devrez consulter leur documentation.
  • Les classes, qui sont chargées depuis votre projet, sont automatiquement mises en correspondance avec les sources du projet.

Mais que se passe-t-il si Eclipse suggère toujours de joindre la source, même si j'ai correctement défini mes classes et leurs sources :

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

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

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

Les paquets de débogage de la section PDE . Dans ce cas, comme le runtime est composé de plusieurs projets, qui n'ont pas à déclarer de dépendances entre eux, Eclipse trouvera automatiquement la classe dans l'espace de travail, même si elle n'est pas disponible dans le chemin de recherche des sources.

Je ne peux pas voir les variables lorsque j'atteins un point d'arrêt ou bien il 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. Afin de réduire l'espace de stockage des classes, ces informations sont parfois omises, ce qui rend le débogage d'un tel code pénible. Votre seule chance est d'essayer de recompiler avec le débogage activé.

Le visualiseur de sources d'Eclipse montre des lignes différentes de celles qui sont réellement exécutées :

Il peut parfois montrer que l'espace vide est aussi bien exécuté. 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, ça l'est, donc assurez-vous que vous configurez les sources correctes. Ou que votre runtime correspond à vos dernières modifications, selon ce que vous essayez de faire.

0 votes

Excellente réponse ! Il manque un petit détail dans cette réponse qui est spécifique aux bundles OSGi : Eclipse peut trouver les sources si un bundle contient OSGI-OPT/src et si le bundle est sur le chemin de construction d'un projet Eclipse. Voir cet autre article de stackoverflow pour plus de détails : stackoverflow.com/questions/9720483/

0 votes

Vous pouvez peut-être jeter un coup d'œil à este - Je suis déjà à court de choses à essayer

0 votes

Bon à savoir. Beaucoup de théorie, mais aucune solution pratique.

11voto

Vering Points 109

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

"Lors de l'exécution en mode débogage, faites un clic droit sur le thread en cours d'exécution (dans l'onglet threads) et sélectionnez Edit Source Lookup. À ce stade, vous devriez être en mesure d'ajouter le projet/jar nécessaire qui contient votre code source."

J'ai ajouté mon projet actuel de cette façon, et cela a résolu mon problème.

0 votes

J'ai dû faire cela dans la vue Debug, là sous "Remote Java Application" ou "Java HotSpot VM".

6voto

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

0 votes

J'ai suivi cette procédure et ça a marché. Peut-être parce que j'ai également ajouté le dossier du projet java souhaité dans l'onglet "Source" de la nouvelle configuration d'exécution/débogage. Peut-être que le simple fait d'ajouter le dossier/projet source manquant à l'onglet 'Source' de la configuration d'exécution/débogage existante peut fonctionner sans avoir à le supprimer au préalable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X