it-swarm.com.ru

Eclipse Java отладка: источник не найден

При отладке Java-приложения в Eclipse я получаю ошибку " Source not found " в двух случаях:

  • Переход к файлу в другом проекте, который уже импортирован
  • Переход к файлу в установленном репозитории maven

Файлы есть, но Eclipse не будет входить в них, вместо этого он показывает кнопку « присоединить источник »

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

Я новичок в Eclipse\Java, поэтому объяснение того, почему это происходит + как решить эту проблему, очень поможет!

162
Jonathan

Отладка Eclipse работает с классом фактически загруженным программой.

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

Это может произойти по нескольким причинам, но посмотрите на местоположение, где находятся классы, показывающие это поведение (посмотрите на панель навигации, чтобы определить это). Скорее всего, вам потребуется изменить путь сборки проекта, чтобы избежать использования этого jar-файла, и вместо этого JVM будет использовать проект.

Правка: Обратите внимание, что с 2018 года обычно используется среда сборки, такая как Maven, где путь сборки управляется плагином m2e, поэтому эта проблема должна быть гораздо реже, чем когда был задан вопрос.

48
Thorbjørn Ravn Andersen

Всего 3 шага для настройки Eclipse IDE:

Примечание: После обновления путей поиска исходного кода вам придется остановить и перезапустить сеанс отладки. В противном случае файл с отсутствующим источником будет продолжать отображать «отсутствующий источник».

Edit Source LookupВыберите команду Edit Source Lookup ... [Edit Source Lookup], чтобы открыть диалог Source Path, который позволяет вам вносить изменения в исходный путь поиска выбранной цели отладки.

enter image description here

enter image description here

enter image description here

ВАЖНЫЙ Перезапустите Eclipse после этого последнего шага.

252
Douglas Frari

Симптомы прекрасно описывают случай, когда найденный класс не имеет связанного (или назначенного) источника.

  • Вы можете связать источники для классов JDK в Preferences> Java> Installed JRE. Если JRE (не JDK) определяется как используемый по умолчанию JRE, то у ваших классов JDK не будет подключенных источников. Обратите внимание, что не все классы JDK предоставляют источники, некоторые из них распространяются только в двоичной форме.
  • Классы из пути сборки проекта, добавленные вручную, требуют ручного присоединения связанного источника. Источник может находиться в файле Zip или jar, в рабочей области или в файловой системе. Eclipse просканирует Zip, поэтому ваши источники не обязательно должны находиться в корне архивного файла, например.
  • Классы, из зависимостей, поступающих от других плагинов (maven, PDE и т.д.). В этом случае, это зависит от плагина, как источник будет предоставлен .
    • PDE будет требовать, чтобы каждый плагин имел соответствующий пакет XXX.source, который содержит источник плагина. Более подробную информацию можно найти здесь и здесь .
    • m2Eclipse может извлекать источники и javadoc для зависимостей Maven, если они доступны. Для этой функции должны быть включены параметры m2Eclipse (параметр был назван примерно как "Скачать исходный код и javadocs").
    • Для других плагинов, вам нужно обратиться к их документации
  • Классы, которые загружаются из вашего проекта, автоматически сопоставляются с источниками из проекта.

Но что, если Eclipse по-прежнему будет предлагать вам присоединить источник, даже если я правильно установил свои классы и их источники:

Это почти всегда означает, что Eclipse находит класс в другом месте, чем вы ожидаете. Проверьте ваш путь поиска источника, чтобы увидеть, где он может получить неправильный класс. Обновите путь в соответствии с вашими выводами.

Eclipse вообще ничего не находит, когда достигается точка останова:

Это происходит, когда у вас путь поиска исходного кода не содержит класс, который в данный момент загружается во время выполнения. Даже если класс находится в рабочей области, он может быть невидим для конфигурации запуска, потому что Eclipse строго следует исходному пути поиска и присоединяет только зависимости проекта, который в данный момент отлажен.

Исключением являются пакеты отладки в PDE. В этом случае, поскольку среда выполнения состоит из нескольких проектов, которым не нужно объявлять зависимости друг от друга, Eclipse автоматически найдет класс в рабочей области, даже если он не доступен в исходном пути поиска.

Я не вижу переменные, когда попадаю в точку останова или она просто открывает источник, но не выбирает строку точки останова:

Это означает, что во время выполнения JVM или сами классы не имеют необходимой отладочной информации. Каждый раз, когда классы компилируются, отладочная информация может быть прикреплена. Чтобы уменьшить объем памяти классов, иногда эта информация опускается, что затрудняет отладку такого кода. Ваш единственный шанс - попытаться перекомпилировать с включенной отладкой.

Средство просмотра исходного кода Eclipse показывает строки, отличные от тех, которые фактически выполняются:

Иногда это может показать, что пустое пространство также выполняется. Это означает, что ваши источники не соответствуют вашей версии классов во время выполнения. Даже если вы считаете, что это невозможно, это так, поэтому убедитесь, что вы настроили правильные источники. Или ваша среда выполнения соответствует вашим последним изменениям, в зависимости от того, что вы пытаетесь сделать.

44
Danail Nachev

От http://www.coderanch.com/t/587493/vc/Debugging-Eclipse-Source

«При работе в режиме отладки щелкните правой кнопкой мыши по запущенному потоку (на вкладке« Потоки ») и выберите« Редактировать поиск исходного кода ». На этом этапе вы сможете добавить необходимый проект/jar, содержащий ваш исходный код».

Я добавил свой текущий проект таким образом, и он решил мою проблему

9
Vering

У меня была похожая проблема с моим проектом Eclipse Maven. Я боролся с этой проблемой довольно долго, затем я попытался восстановить проект с 

mvn clean Eclipse:eclipse

и это помогло.

9
krzysiek.ste

Удалите существующую конфигурацию отладки и создайте новую. Это должно решить проблему.

5
Rajneesh Sekharmantri

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

Window => Preferences => Java => Installed JREs,

enter image description here

Вы видите на приведенном выше экране Jre1.8.0_12 выбран.

выберите JRE, которую вы используете, и нажмите Edit, Теперь вы должны увидеть нижний экран.

enter image description here

Нажмите на каталог, найдите Jdk, он должен выглядеть ниже. enter image description here

нажмите ОК, и все готово

4
Varun

У меня была проблема, что мой Eclipse не отлаживал исходный код моего проекта. Я получаю пустую страницу с "Узлом исходного кода найден". 

Пожалуйста, нажмите кнопку Прикрепить исходный код. Затем удалите папку «по умолчанию», затем нажмите «Добавить», перейдите в папку с проектом и прикрепите. Это сработало для меня

3
avase

Очевидно, Eclipse не знает автоматически, где находится исходный код для зависимых jar-файлов. Непонятно, почему отладчик не может проверять переменные после присоединения источника. Одна возможность - неверный/несовместимый источник.

Предполагая, что у вас есть проект maven, а источники зависимостей загружены и доступны в локальном репозитории, вы можете установить m2Eclipse , плагин maven Eclipse и посмотреть, поможет ли это в решении вашей проблемы.

2
Raghuram

В моем случае в «Attach Source» я добавил другой каталог проекта maven на панели «Source Attachment Configuration». Добавление последней версии jar из репозитория m2 не работает. Все классы из другого проекта Maven не удалось открыть. 

 enter image description here

Здесь test был мой другой проект maven, содержащий все исходные коды Java. 

1
Lucky

У вас может быть исходный код зависимости, доступной для Eclipse. Но Eclipse не знает исходного кода для кода, который загружается динамически. Например. через мавен.

В случае Maven я рекомендую использовать плагин run-jetty-run:

http://code.google.com/p/run-jetty-run/

В качестве обходного пути вы также можете подключиться к работающей JVM с помощью отладчика и увидеть код . В качестве альтернативы вы можете использовать плагин Dynamic Source Lookup для Eclipse отсюда:

https://github.com/ifedorenko/com.ifedorenko.m2e.sourcelookup

К сожалению, это не помогло мне, поскольку у него есть проблемы с путями Windows с пробелами.

Я заполнил запрос на улучшение Eclipse Bugzilla, и если вы согласны, что этот вопрос «Источник не найден» должен исчезнуть навсегда, пожалуйста, проголосуйте за него здесь:

https://bugs.Eclipse.org/bugs/show_bug.cgi?id=384065

Спасибо!

Sasa

1
ssasa

В моем случае, даже после редактирования поиска источника и добавления проекта, это не сработало. Я настроил путь сборки проекта.

 enter image description here

После этого я выбрал Системную библиотеку JRE, и она заработала.

 enter image description here

1
Germa Vinsmoke

При работе в режиме отладки нажмите «Редактировать поиск исходного кода» после приостановки из потока. На этом этапе мы должны иметь возможность добавить необходимый проект/jar, который содержит ваш исходный код . После того, как я добавил свой текущий проект таким образом, и это решило мою проблему. Спасибо

0
Yoga

Ну, вот что сработало для меня. Я попробовал все возможные решения на StackOverflow, что там было. Я попытался изменить свое местоположение источника в меню отладки, я установил Eclipse-плагин m2e, я перешел со встроенного Maven и установил run-jetty-run, но ничего не получилось. Теперь я хочу предупредить, что я не пытался просматривать исходный код внешнего человека, я просто хотел увидеть свой СОБСТВЕННЫЙ код, но каждый раз, когда я «заходил» к своим методам, которые я написал, которые были в МОЕМ проекте, я получал Ошибка «Источник теперь найден».

После того, как я наконец спросил эксперта, моя проблема заключалась в том, что Eclipse первым делом вызывал ClassLoader, который можно увидеть из стека отладки. Все, что мне нужно было сделать, это F6 (шаг), а затем он вернул меня к исходному звонку, а затем F5 (шаг). И там был мой код. Вздох ... такое простое исправление, но потерянный час.

0
Chris C

это сработало для меня

щелкните правой кнопкой мыши по проекту -> Свойства -> Сборка развертывания -> добавьте свой флягу

0
TajnosAgentos

У меня была та же проблема. В моем случае я отключил Window-Preferences-Java-Debug [Приостановить выполнение на необработанных исключениях]. Затем консоль показала мне правильную ошибку: мой пользователь MySql не имел прав доступа к базе данных. По этой теме.

0
Alex

Информация: это возможное решение, когда вы используете maven (pom.xml) с несколькими проектами.

Если вы работаете с maven, убедитесь, какую версию вы используете внутри соответствующего pom.xml (например, 1.0.1-SNAPSHOT) . Возможно, ваш код обновлен, но ваш pom. xml-зависимости по-прежнему принимают старые JAR-файлы/снимки (со старым кодом). 

Нахождение проблемы:

  • Попробуйте отладить соответствующий файл. 
  • Поэтому установите точку останова в соответствующей области кода. 
  • Когда появляется «источник не найден» , убедитесь, что привязка выполнена в нужном проекте (где находится файл .Java). 
  • Файл компиляции .class открывается в редакторе IDE.
  • Нажмите «Link with Editor», чтобы найти соответствующий JAR/снимок. 
  • Теперь убедитесь, что этот JAR-файл самый последний. Возможно, есть более новый. В этом случае напишите номер самой последней версии в файле pom.xml.
  • Затем выполните обновление maven и соберите (например, "mvn clean install -U") в правильном каталоге проекта.
0
Birol Efe

В моем случае версия Maven другого ссылочного проекта не соответствовала версии тестового проекта. Когда они были одинаковыми, проблема исчезла.

0
maarten

Если вы хотите присоединить исходный код к любому JAR путем автоматической загрузки, попробуйте использовать этот плагин Eclipse Java Source Attacher

enter image description here

0
KrishPrabakar

Для начинающих, 

Существует вероятность того, что файл jar является частью проекта, который вы еще не включили в рабочую область Eclipse.

Для этого вам нужно знать имя проекта файла jar . Скажем, например, его abc - 18.0.0-SNAPSHOT.jar, это означает, что проект, который вы должны включить в ваше рабочее пространство is abc .

0
Shobhit Mittal

В моем случае с проектами Tomcat я проверил проект здесь: Окно - Настройки - Tomcat - Исходный путь - Добавить проекты Java в исходный путь

0
user3132194

У меня была связанная проблема, связанная с отладкой сервера Glassfish в Eclipse . Это было вызвано загрузкой исходного кода из другого репозитория (переход с SVN на GitHub). В ходе этого процесса сервер Glassfish использовал неправильные скомпилированные классы, и, следовательно, время источника и выполнения не синхронизировалось с точками останова, появляющимися в пустых строках.

Чтобы решить эту проблему, переименуйте или удалите верхнюю папку каталога классов, и Glassfish заново создаст все дерево каталогов классов, включая обновление файлов классов с правильно скомпилированной версией.

Каталог классов находится в:/workspace/glassfish3122eclipsedefaultdomain/eclipseApps/<ваше веб-приложение>/WEB-INF/classes

0
user3035873

Нажмите -> Изменить исходный путь поиска

после того 

Нажмите -> Добавить, наконец, выберите проект Java и выберите путь к проекту.

Источник: https://www.youtube.com/watch?v=IGIKPY6q1Qw

0
Oguzhan Cevik

Если вы используете Eclipse или STS, пожалуйста, установите и используйте GC (плагин GrepCode), иногда вам не нужно прикреплять исходный файл .Zip к пути вашего проекта, чтобы GrepCode работал нормально для вас.

0
danielad

У меня была та же проблема с Eclipse 2019-03 (4.11.0), и я смог решить эту проблему только путем отладки с помощью удаленной отладки вместо непосредственного запуска в режиме отладки.

0
Kai

У меня была эта проблема во время работы над кодом Java, чтобы выполнить обработку файла Excel, содержащего набор данных, а затем преобразовать его в файл .csv, я попробовал ответы на этот пост, но они не сработали .. Проблема была в банке сами файлы. после загрузки необходимых jar-файлов один за другим (более ранние выпуски) и добавления их в мой проект ошибка «источник не найден» исчезла .. возможно, вы можете проверить свои jar-файлы .. надеюсь, это поможет.

0
simin

Перейдите к настройке Debug в Eclipse и используйте приведенную ниже цель для запуска вашего приложения.

-Dmaven.surefire.debug

например 

-Dmaven.surefire.debug exec: Java 

0
Vishvesh Phadnis