Проблема с прикреплением исходного кода в Eclipse

В 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)

Можете ли вы переформатировать записи .classpath, чтобы они были видимыми (после разметки)?

Dave L. 11.10.2008 03:43
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
1
15 718
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

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

Спасибо, думаю, можно попробовать открыть проект в Европе.

Paul Croarkin 10.10.2008 20:54

К счастью, файл JDK src.zip был установлен автоматически вместе с моей установкой Java. Типичное расположение src.zip в системе Windows 64 - C: \ Program Files \ Java \ jdk_yourVersion.

MasterJoe 29.01.2019 08:40

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

Присоединение источников - это еще не все, что требуется для входа в библиотеку по пути к классам; эта библиотека также должна быть скомпилирована с отладочными символами. Обычно это не проблема, поскольку большинство библиотек 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 задыхается. Или что-то вроде того.

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

Другие вопросы по теме