Симптомы прекрасно описывают случай, когда найденный класс не имеет связанного (или назначенного) источника.
- Вы можете связать источники для классов 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 показывает строки, отличные от тех, которые фактически выполняются:
Иногда это может показать, что пустое пространство также выполняется. Это означает, что ваши источники не соответствуют вашей версии классов во время выполнения. Даже если вы думаете, что это невозможно, это так, поэтому убедитесь, что вы настроили правильные источники. Или ваша среда выполнения соответствует вашим последним изменениям, в зависимости от того, что вы пытаетесь сделать.