В Eclipse (Ganymede) я отлаживаю некоторый код, который использует Apache Commons HttpClient и хотел бы войти в код HttpClient. Я загрузил исходный код и попытался прикрепить его обычным способом (щелкните имя метода, удерживая CTRL, и нажмите кнопку «Прикрепить источник»). Я безуспешно пытался прикрепить как внешний файл, так и внешнюю папку. Я прикреплял исходный код раньше без проблем и в настоящее время могу успешно перейти в исходный код Hibernate.
Я даже попытался отредактировать файл .classpath напрямую, чтобы добавить исходный путь вручную. По-прежнему не повезло. Обновление проекта, выполнение чистой сборки, закрытие и повторное открытие Eclipse не решают проблему. К сожалению, Eclipse не выдает сообщений об ошибках; он просто не прикрепляет источник.
Вот записи в .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"/>
Я пробовал изменить путь на D: /Data/Download/commons-httpclient-3.1/src, и это тоже не работает.
Структура каталогов:
D
Data
Download
commons-httpclient-3.1
src
java
org
apache
commons
httpclient
AutoCloseInputStream.java
... (and so forth)




Попробовать прикрепить src.zip вместо распакованного src?
Спасибо, думаю, можно попробовать открыть проект в Европе.
К счастью, файл JDK src.zip был установлен автоматически вместе с моей установкой Java. Типичное расположение src.zip в системе Windows 64 - C: \ Program Files \ Java \ jdk_yourVersion.
Попробуйте добавить его в исходный путь вашей конфигурации запуска.
Присоединение источников - это еще не все, что требуется для входа в библиотеку по пути к классам; эта библиотека также должна быть скомпилирована с отладочными символами. Обычно это не проблема, поскольку большинство библиотек Java компилируются и распространяются таким образом, но, как вы обнаружили, некоторые из них - нет.
Интересно отметить, что вы можете заходить во внешние библиотеки даже без прикрепленного источника, вы просто не можете видеть построчные источники (вся отладочная информация по-прежнему работает).
Вы можете «исправить» эту проблему, скомпилировав собственную версию Commons HttpClient (не слишком сложно), или просто пропустив весь «шаг в библиотеку». Как правило, использование сторонних библиотек редко дает полезную информацию. Я делал это, может быть, один или два раза за последние десять лет, и ни разу это не приблизило меня к решению возникшей дилеммы.
Попробуйте указать его на каталог, содержащий пакет верхнего уровня, для вас "D: /Data/Download/commons-httpclient-3.1/src/java". Что сработало для меня, так это создание нового zip-файла src, содержащего папку «org» и все, что находится под ней.
Вот моя запись .classpath (которая работает для меня) на случай, если это поможет:
<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"/>
Я обнаружил, что иногда вы указываете каталог, который, как вы считаете, был правильным, а затем он по-прежнему заявляет, что не может найти файл в прикрепленном исходном коде, бла-бла.
В этот раз я понял, что последним элементом пути был «src». Простое удаление этого элемента пути (то есть указание на один уровень выше фактического пути, где находится папка «org» или «com») волшебным образом заставляет его работать.
Каким-то образом Eclipse, кажется, подразумевает этот элемент пути "src", если он присутствует, и если вы затем включили его в исходный путь, Eclipse задыхается. Или что-то вроде того.
Думаю, проблема в пробелах (или локализованных) символах в пути к исходному архиву. Попробуйте переместить его в другое место простым путем.
Можете ли вы переформатировать записи .classpath, чтобы они были видимыми (после разметки)?