Question

Dans Eclipse (Ganymede), je débogue un code qui utilise Apache Commons HttpClient et souhaite entrer dans le code HttpClient. J'ai téléchargé le code source et essayé de l'attacher de manière normale (CTRL-cliquez sur le nom de la méthode et utilisez le bouton Joindre la source). J'ai essayé de joindre les fichiers externes et externes sans succès. J'ai déjà attaché la source sans aucun problème et je peux actuellement intégrer le code source d'Hibernate avec succès.

J'ai même essayé de modifier le fichier .classpath directement pour ajouter manuellement le chemin source. Toujours pas de chance. L'actualisation du projet, la création, la fermeture et la réouverture d'Eclipse ne résolvent pas le problème. Franchement, Eclipse ne fournit aucun message d'erreur; cela n'attache tout simplement pas la source.

Voici les entrées dans .claspath:

<!-- Hibernate. Works -->
<classpathentry kind="lib" path="/myEAP/EarContent/APP-INF/lib/hibernate.jar" sourcepath="D:/Data/Download/hibernate-3.2.2.ga/hibernate-3.2/src"/>

<!-- Commons HttpClient. Will not attach -->
<classpathentry kind="lib" path="/myEAP/EarContent/APP-INF/lib/commons-httpclient.jar" sourcepath="D:/Data/Download/commons-httpclient-3.1/src/java"/>

J'ai essayé de modifier le chemin d'accès en D: /Data/Download/commons-httpclient-3.1/src et cela ne fonctionne pas non plus.

La structure de répertoire est la suivante:

D
  Data
    Download
      commons-httpclient-3.1
        src
          java
            org
              apache
                commons
                  httpclient
                    AutoCloseInputStream.java
                    ... (and so forth)
Était-ce utile?

La solution

Essayez de le pointer directement sur un répertoire contenant le package de niveau supérieur, "D: /Data/Download/commons-httpclient-3.1/src/java" pour vous. Ce qui a fonctionné pour moi a été la création d’un nouveau fichier zip src contenant le fichier "org". dossier et tout ce qui se trouve en dessous.

Voici mon entrée .classpath (qui fonctionne pour moi) au cas où cela aiderait:

<classpathentry kind="lib" path="/blib/java/commons-httpclient-3.1/commons-httpclient-3.1.jar" sourcepath="/blib/java/commons-httpclient-3.1/commons-httpclient-3.1-src.zip"/>

Autres conseils

J'ai constaté que, parfois, vous pointez sur le répertoire que vous supposez être correct, puis il indique toujours qu'il ne trouve pas le fichier dans la source ci-jointe blah blah.

Ces temps-ci, je me suis rendu compte que le dernier élément du chemin était "src". Le simple fait de supprimer cet élément de chemin (et donc de faire pointer un niveau au-dessus du chemin réel où se trouve le dossier "org" ou "com") le fait fonctionner comme par magie.

D'une manière ou d'une autre, Eclipse semble impliquer ceci "src". L'élément path, s'il est présent, et si vous l'incluez ensuite dans le chemin source, indiquez Etripse. Ou quelque chose comme ça.

Essayez de joindre le fichier src.zip au lieu du fichier src décompressé?

Essayez de l'ajouter au chemin source de votre configuration de lancement.

L’attachement de sources n’est pas tout ce qui est nécessaire pour entrer dans une bibliothèque sur le chemin de classe; cette bibliothèque doit également être compilée avec les symboles de débogage. Ce n'est généralement pas un problème, car la plupart des bibliothèques Java sont compilées et distribuées de cette manière, mais comme vous l'avez constaté, certaines d'entre elles ne le sont pas.

Il est intéressant de noter que vous pouvez réellement accéder à des bibliothèques externes même sans la source attachée, mais vous ne pouvez pas voir les sources ligne par ligne (toutes les informations de débogage fonctionnent toujours).

Vous pouvez "réparer" résolvez ce problème en compilant une version personnalisée de Commons HttpClient (pas trop difficile), ou en sautant l’ensemble des "étapes dans la bibliothèque". idée. En tant que pratique de développement générale, accéder à des bibliothèques tierces ne fournira que rarement des informations utiles. Je l'ai fait peut-être une ou deux fois au cours des dix dernières années, mais cela ne m'a pas non plus rapprochée de la résolution du dilemme.

Je pense, problème dans les symboles spatiaux (ou localisés) dans le chemin d'accès à l'archive source. Essayez de le déplacer vers un autre endroit avec un chemin simple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top