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

При отладке приложения java в eclipse я получаю ошибку " Источник не найден" в двух случаях:

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

Файлы есть, но eclipse не будет входить в них, вместо этого отображает кнопку " attach source"

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

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

Ответ 1

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

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

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

РЕДАКТИРОВАТЬ: Обратите внимание, что по состоянию на 2018 г. принято использовать каркас сборки, такой как Maven, где путь сборки управляется плагином m2e, поэтому эта проблема должна быть намного реже, чем когда был задан вопрос. Если вы используете Maven и m2e, обязательно включите Preferences/Maven/"Загрузить источники артефактов" или щелкните правой кнопкой мыши проект Maven/"Загрузить источники".

Ответ 2

Всего 3 шага к конфигурации Eclipse IDE:

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

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

enter image description here

enter image description here

enter image description here

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

Ответ 3

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

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

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

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

Eclipse ничего не обнаруживает, когда ударяется точка останова:

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

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

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

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

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

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

Ответ 4

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

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

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

Ответ 5

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

mvn clean eclipse:eclipse

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

Примечание. Использование этого подхода приведет к путанице в плагине m2e, поскольку эти два подхода очень разные. m2e добавляет в ваш проект виртуальный узел под названием "Зависимости Maven" и просит Maven добавить туда все зависимости.

mvn eclipse:eclipse, с другой стороны, создаст много отдельных записей в файле .classpath. Eclipse будет обрабатывать их так, как если бы вы вручную добавляли JAR файлы в ваш проект.

Если вы не знаете, как работает classpath в Eclipse, такой подход не рекомендуется.

Ответ 6

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

Ответ 7

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

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

введите описание изображения здесь

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

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

введите описание изображения здесь

Щелкните по каталогу, перейдите на Jdk, он должен выглядеть как экран ниже. введите описание изображения здесь

нажмите "ОК" и сделайте

Ответ 8

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

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

Ответ 9

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

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

Ответ 10

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

В случае 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

Спасибо!

Саса

Ответ 11

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

enter image description here

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

enter image description here

Ответ 12

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

enter image description here

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

Ответ 13

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

Ответ 14

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

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

Поиск проблемы:

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

Ответ 15

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

Ответ 16

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

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

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

Ответ 17

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

Ответ 18

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

Ответ 19

При запуске в режиме отладки нажмите "Изменить поиск источника после приостановления потока". На этом этапе мы должны иметь возможность добавить необходимый проект/банку, которая содержит ваш исходный код. После того, как я добавил свой текущий проект таким образом, он решил мою проблему. Благодаря

Ответ 20

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

enter image description here

Ответ 21

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

Ответ 22

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

щелкните правой кнопкой мыши по проекту → Свойства → Развертывание сборки → добавьте свою банку

Ответ 23

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

-Dmaven.surefire.debug

e.g

-Dmaven.surefire.debug exec: java

Ответ 24

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

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

Ответ 25

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

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

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

Ответ 26

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

после того

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

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

Ответ 27

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

Ответ 28

Если вы пытаетесь отладить ваш проект maven java, и eclipse не сможет найти ваш источник, попробуйте один из них.

  • Попробуйте добавить эти строки в pom.xml
<build>**<sourceDirectory>src/main/java</sourceDirectory>**...

Попробуйте maven- > обновить, а затем отладить

  1. Перейдите в корневую директорию проекта;

mvn eclipse: eclipse

теперь попробуйте отладить

Ответ 29

В фотоне затмения попробуйте отключить "Window-> Предпочтения → Java-> Отладка-> Использовать расширенный поиск источника"

Редактировать: в этой версии eclipse есть связанная ошибка, которая приводит к сообщению "источник не найден" при отладке приложений Java. См. Отчет об ошибке bugs.eclipse.org/bugs/show_bug.cgi?id=537699 для получения дополнительной информации.

Ответ 30

В моем случае проблема была решена нажатием Remove All Breakpoints