Прикрепить источник проблемы в Eclipse - PullRequest
5 голосов
/ 10 октября 2008

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

Я даже пытался редактировать файл .classpath напрямую, чтобы добавить sourcepath вручную. Все еще не повезло. Обновление проекта, чистая сборка, закрытие и повторное открытие 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)

Ответы [ 6 ]

6 голосов
/ 11 октября 2008

Попробуйте указать его непосредственно в каталоге, содержащем пакет верхнего уровня, "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"/>
4 голосов
/ 20 июля 2010

Я обнаружил, что иногда вы указываете на каталог, который, как вы полагаете, был правильным, а затем он по-прежнему утверждает, что не может найти файл в прикрепленном источнике, бла-бла.

В этот раз я понял, что последним элементом пути был "src". Простое удаление этого элемента пути (таким образом, действительно указывая один уровень выше фактического пути, где находится папка «org» или «com») магическим образом заставляет его работать.

Каким-то образом Eclipse, по-видимому, подразумевает этот элемент пути "src", если он присутствует, и если он затем включен в исходный путь, Eclipse блокируется. Или что-то в этом роде.

3 голосов
/ 10 октября 2008

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

2 голосов
/ 10 октября 2008

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

1 голос
/ 06 апреля 2011

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

1 голос
/ 11 октября 2008

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

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

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

...