Вопрос

В Eclipse (Ganymede) я отлаживаю некоторый код, который использует Apache Commons HttpClient и хотел бы войти в код HttpClient. Я скачал исходный код и попытался прикрепить его обычным способом (нажмите CTRL по имени метода и используйте кнопку «Attach Source»). Я пытался прикрепить как внешний файл, так и внешнюю папку, но безуспешно. Я уже подключил исходный код без проблем и в настоящее время могу успешно войти в исходный код 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)
Это было полезно?

Решение

Попробуйте указать его в каталоге, содержащем пакет верхнего уровня напрямую, " D: /Data/Download/commons-httpclient-3.1/src/java" для тебя. Что мне помогло, так это создание нового zr-файла 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 заклинивает. Или что-то в этом роде.

Попробуйте прикрепить src.zip вместо разархивированного src?

Попробуйте добавить его в исходный путь вашей конфигурации запуска.

Присоединение источников - это не все, что требуется для входа в библиотеку на пути к классам; эта библиотека также должна быть скомпилирована с отладочными символами. Обычно это не проблема, так как большинство библиотек Java компилируются и распространяются таким образом, но, как вы обнаружили, некоторые из них - нет.

Интересно отметить, что вы можете входить во внешние библиотеки даже без подключенного источника, вы просто не можете видеть построчные источники (вся информация отладки все еще работает).

Вы можете " исправить " Эта проблема заключается в компиляции пользовательской версии Commons HttpClient (не так уж сложно) или просто пропустите весь «шаг в библиотеку». идея. Как общая практика разработки, вход в сторонние библиотеки редко дает полезную информацию. Я делал это, может быть, один или два раза за последние десять лет, и ни разу это не приблизило меня к решению стоящей перед нами дилеммы.

Я думаю, проблема в пробелах (или локализованных) символах в пути к исходному архиву. Попробуйте переместить его в другое место с простым путем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top