Прикрепите проблему с источником в Eclipse

#java #eclipse #eclipse-3.4 #ganymede

Вопрос:

В затмении (Ганимед) Я отлаживаю некоторый код, который использует HttpClient Apache Commons, и хотел бы перейти к коду HttpClient. Я загрузил исходный код и попытался прикрепить его обычным способом (CTRL-щелкните по имени метода и используйте кнопку Прикрепить исходный код). Я пытался прикрепить как внешний файл, так и внешнюю папку, но безуспешно. Я подключал исходный код раньше без проблем и в настоящее время могу успешно перейти в режим гибернации исходного кода.

Я даже попытался отредактировать файл .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)
 

Комментарии:

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

Ответ №1:

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

Ответ №2:

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

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

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

Ответ №3:

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

Комментарии:

1. Спасибо, я думаю, что мог бы попробовать открыть проект в Европе.

2. К счастью, JDK src.zip файл был установлен автоматически при моей установке Java. В src.zip типичное расположение в системе Windows 64 C:Program ФайлыJavajdk_yourVersion.

Ответ №4:

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

Ответ №5:

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

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

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

Ответ №6:

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