10
votes

Eclipse - Source introuvable

Je sais que cette question a été posée à plusieurs reprises auparavant, mais aucune des solutions proposées ne résout mon problème (ni je ne les mettant pas correctement correctement).

Je développe un plugin pour OpenFire, et quand je mis un point d'arrêt dans ma source de plugin Eclipse rapports « Source not found ». Le pot est construit séparé de la construction du serveur OpenFire. J'ai essayé d'ajouter le bocal et de spécifier le répertoire de code source, mais pas de dés.

Voici le processus que je suis suivant: Lorsque je frappe mon point d'arrêt, je clique sur "Modifier la source de la recherche de sources", en cliquant sur "Ajouter", une bibliothèque Java, une bibliothèque d'utilisateurs, cliquez sur Bibliothèques d'utilisateurs, ajout de ma bibliothèque (essayé à la fois "Ajouter Pots "et" Ajouter des pots externes "), puis spécifiez le dossier contenant le code source. J'ai aussi essayé:

  • Ajout de la source en sélectionnant "Fichier système de répertoire" au lieu de "Java Library"
  • Ajout en sélectionnant "espace de travail dossier"
  • Dans l'Explorateur de projets, en ajoutant la source de mon plugin le chemin Java Build
  • Dans l'explorateur de projet, ajoutez mon bocal en tant que bibliothèque et en spécifiant la pièce jointe de la source

    Merci d'avance pour toute suggestion.


1 commentaires

Lorsque vous touchez le point d'arrêt, Eclipse montre probablement un fichier .Class. Vous pouvez attacher le répertoire source (à condition que vous ayez importé la source comme autre projet Eclipse).


6 Réponses :


11
votes

Personnellement, je n'ai aucune bonne expérience dans Eclipse JDT, lors de l'ajout d'un dossier source au moment où il frappe un point de rupture. Ce que je préfère toujours faire, c'est ajouter le dossier source avant de déboguer:

  1. Sélectionnez Projet / Propriétés / Bibliothèques
  2. Sélectionnez votre bibliothèque et "Modifier ..." le Source Pièce jointe
  3. Sélectionnez le dossier source correspondant ou le zip / bocal contenant le package

    Après cela, Vous devriez pouvoir ouvrir les fichiers source dans le dossier virtuel "des bibliothèques référencées" (directement sous le dossier "JRE System Library" dans le projet) ou lors de l'ouverture d'une référence à un fichier de classe lié à partir de l'éditeur JDT. Si vous êtes capable d'accéder à la source, vous devriez également être en mesure de vous arrêter au moins au point de rupture et de voir la source correspondante.

    D'autre, vous devrez vérifier à nouveau si le dossier source est vraiment valide: le dossier source ou l'archive source doit contenir le dossier avec le nom du package racine de la bibliothèque (par exemple, le Java "src.zip" par défaut À l'intérieur du dossier JDK inclut également un dossier "Java" correspondant à sa racine). En cas de doute, extraire l'archive et sélectionnez le dossier parent du paquet qui vous intéresse - parfois des archives source pourraient être en désordre ou incompatible avec JDT.

    Si cela a été assuré et que cela ne fonctionne toujours pas, les chances sont que votre dossier source lié ne correspond pas à la version compilée de la bibliothèque. Habituellement, JDT gérera de telles incohérences bien, mais si vous essayez d'ouvrir un fichier source, c'est tout à fait différent du fichier de classe correspondant, vous rencontrerez des problèmes. Dans ce cas, je suggérerais de télécharger la version source correcte de la bibliothèque ou recompilation de la bibliothèque de la source si tout échoue.

    Si vous ouvrez un fichier source référencé à partir de l'éditeur JDT fonctionnant bien et que vous ne pouvez toujours pas ouvrir les fichiers source lorsqu'un point de rupture est entré pendant le débogage, les fichiers de classe sont probablement Manquer les numéros de ligne du fichier source correspondant. Encore une fois, vous devrez recompiler la bibliothèque de la source dans ce cas.

    Enfin, il est également possible d'écraser la recherche de source par défaut en spécifiant des dossiers de source ou des archives dans l'onglet Source de la configuration de lancement. Mais vous n'avez normalement pas besoin de le faire, lorsque votre chemin de construction est configuré correctement. De Aide Eclipse :

    L'onglet Source définit l'emplacement des fichiers source utilisés pour afficher la source lors du débogage d'une application Java. Par défaut, ces paramètres sont dérivés du chemin de construction du projet associé. Vous pouvez remplacer ces paramètres ici.


1 commentaires

Excellente réponse. Bien que ces suggestions ne résolvent pas mon problème, cela m'a aidé à comprendre comment Eclipse travaille à cet égard.



6
votes

J'ai eu ce problème très ennuyeux depuis longtemps, mais finalement été en mesure de le résoudre. Dans mon cas, une exception de pointeur nul était jeté quelque part dans le Transformer.IsRuntimeCode Java (ProtectionDomain) fonction.

Je n'ai pas vraiment besoin de savoir à ce sujet depuis l'exception était interceptée et traitée, mais éclipse se mettre en pause le débogage tous les fois que ce qui est arrivé et m'a dit que la source était pas disponible. Par conséquent, afin d'éviter que cela se produise, je je devais constamment continuer à appuyer sur le bouton pour continuer l'exécution de code p>

. P>

C:\Program Files\Java\jdk1.7.0_07\src.zip.


0 commentaires

3
votes

Eh bien, il s'avère que la solution était anticlimale. Lorsque les recommandations de Callder n'ont pas fonctionné, j'ai essayé de déboguer l'un des plugins de stock OpenFire et cela a bien fonctionné. J'ai ensuite créé un nouveau plugin à partir de zéro et en ne faisant rien d'autre que d'ajouter la source au projet (cliquez avec le bouton droit de la souris sur le projet -> NOUVEAU -> Dossier source) Cela a également fonctionné simplement. Je ne sais pas pourquoi Eclipse refuse de voir la source de mon plugin d'origine, mais j'ai déplacé tout mon code et des bibliothèques sur le nouveau plugin et le débogage fonctionnent comme prévu.


0 commentaires

0
votes

Plusieurs fois, vous mettez des fichiers JAR dans Eclipse IDE comme bibliothèques référencées lorsque la version binaire d'application a été téléchargée. Généralement fait donc en configurant le chemin de construction. Mais le binaire n'a pas les fichiers source. Vous avez une version binaire et une version source d'application.

Un moyen simple est de télécharger les bibliothèques source que vous utilisez également Maven pour créer le projet. Gardez quelque chose, peut être dans votre espace de travail de projet.

Maintenant, en voyant le fichier de classe (à partir de Eclipse, Jar Exploded), vous pouvez voir la source non trouvée, bien ... Vous trouverez un bouton ci-dessous et cliquez dessus, une nouvelle fenêtre s'ouvre et sélectionnez Ajouter un dossier externe.

Référez-le au dossier SRC de la source que vous avez téléchargée (pas le binaire) et conservé quelque part comme indiqué ci-dessus et qu'il affichera les détails de la classe à partir de ceux-ci.


0 commentaires

0
votes

J'ai corrigé ce problème avec ce qui suit:

Cliquez sur la fenêtre du menu - Préférences - Débogage - Étape filtrant et vérifiez tous les paquets comme l'image suivante.

(Filtrage de l'étape)

Puis, déboguer à nouveau votre projet et c'est ça.

meilleures salutations,


0 commentaires

0
votes

Dans mon cas, j'ai eu un point d'arrêt dans la déclaration de classe. Je veux dire dans la ligne suivante.

Public Class GenerateInterface implémente Javacall {

Donc, le débogueur s'est arrêté dans cette ligne et a montré le message suivant:

source non trouvée

Je pense inconsciemment activer le point d'arrêt dans cette ligne.


0 commentaires