Eclipse java debugging: джерело не знайдено


179

Під час налагодження програми Java у затемненні я отримую помилку " Джерело не знайдено " у двох випадках:

  • Перехід до файлу в іншому проекті, який вже імпортується
  • Перехід до файлу у встановленому сховищі Maven

Файли є, але затемнення до них не вступає, натомість показує кнопку " приєднати джерело "

Я спробував приєднати (який відкрив діалогове вікно для визначення змінної ?!) і eclipse все-таки перескочив до файлу, але налагоджувач не міг перевірити жодних змінних там. Також вручну приєднувати джерело для кожної залежності не є практичним, оскільки в моєму випадку є тисячі файлів залежності.

Я новачок у затемненні \ java, тому пояснення того, чому це відбувається + як вирішити це, допоможе дуже багато!

Відповіді:


53

Налагодження Eclipse працює з фактично завантаженим класом програмою.

Симптоми, які ви описуєте, звучать як клас, про який йдеться, знайдений не в проекті, а в розповсюджувальній банці без інформації про налагодження, знайденої раніше проекту, з яким ви працюєте.

Це може статися з декількох причин, але подивіться місце, де знаходять класи, що показують таку поведінку (подивіться на панелі навігації, щоб визначити її). Вам, швидше за все, потрібно буде змінити шлях збирання проекту, щоб уникнути використання цієї jar і змусити JVM використовувати проект замість цього.

EDIT: Зауважте, що станом на 2018 рік звичайно використовувати структуру збірки, як Maven, де шлях збирання управляється плагіном m2e, тому ця проблема повинна бути рідше, ніж тоді, коли запитання було задано. Якщо ви використовуєте Maven та m2e, переконайтесь, що ввімкнено Preferences / Maven / "Завантажити джерела артефакту" або клацніть правою кнопкою миші проект, Maven / "Download Sources".


привіт спасибі за все , але я знайшов цю відповідь більш корисним (стек по лінії потоку) [ stackoverflow.com/questions/5815013 / ...
Шаріфа

11
@shareef це посилання стосується відсутнього javadoc, не відсутнього джерела.
Thorbjørn Ravn Andersen

@ACV Ну так. Можливо, це не так докладно, як хотілося б - ви могли б дати мені знати, що ви хотіли б пояснити краще?
Thorbjørn Ravn Andersen

відповідь - інший спосіб сказати: проблема - "джерело не знайдено", а моя пропозиція - "спробуйте знайти джерело"
Junchen Liu

1
@dhein Подумайте про відкриття нового питання з набагато детальнішою інформацією.
Thorbjørn Ravn Andersen

301

Всього 3 кроки для налаштування IDE Eclipse:

Примітка. Після оновлення шляхів пошуку джерела вам доведеться зупинити і перезапустити сесію налагодження. В іншому випадку файл із відсутнім джерелом продовжуватиме показувати "відсутнє джерело".

Редагування пошуку джерела Виберіть команду "Змінити пошук джерела ..." [Редагувати пошук джерела], щоб відкрити діалогове вікно "Шлях джерела", яке дозволяє вносити зміни до шляху пошуку джерела вибраної цілі налагодження.

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

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

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

ВАЖЛИВО Перезавантажте затемнення після цього останнього кроку.


7
Редагування пошуку джерела насправді працювало на мене. Дякую Дугласу Фрарі
Stephen ebichondo

3
Працює як шарм. Дякую!
Карлос Спор

11
а що, якщо навіть це не працює ... тому що це не працює для мене
Сарас Арія

11
Важливо !! Працював добре, але лише ПІСЛЯ я зупинив запущену програму та перезапустив її. Поки я не зробив це, здавалося, що він все ще не може отримати джерела.
Jeach

1
Я займався цим і знову місяцями. Це спрацювало чудово.
aCarella

45

Симптоми чудово описують випадок, коли знайдений клас не має асоційованого (або призначеного) джерела.

  • Ви можете пов’язати джерела для класів JDK у налаштуваннях> Налаштування> Java> Встановлений JRE . Якщо JRE (не JDK) виявлений як JRE за замовчуванням, який буде використовуватися, то ваші класи JDK не матимуть доданих джерел. Зауважте, що не всі класи JDK надали джерела, деякі з них поширюються лише у двійковій формі.
  • Класи із шляху збирання проекту, додані вручну, потрібно вручну приєднати пов'язане джерело. Джерело може знаходитись у файлі zip або jar, у робочій області або у файловій системі. Eclipse сканує поштовий індекс, тому джерела, наприклад, не повинні знаходитись у корені архівного файлу.
  • Класи, від залежностей, що надходять від інших плагінів (maven, PDE тощо). У цьому випадку, від плагіна залежить те, як буде надано джерело.
    • PDE вимагатиме, щоб кожен плагін мав відповідні пакет XXX.source , який містить джерело плагіна. Більше інформації можна знайти тут і тут .
    • m2eclipse може отримати джерела та javadocs для залежностей Maven, якщо вони доступні. Цю функцію слід увімкнути налаштуваннями m2eclipse (параметр був названий чимось на кшталт " Завантажити джерело та javadocs ".
    • Для інших плагінів вам потрібно ознайомитися з їх документацією
  • Класи, завантажені з вашого проекту, автоматично узгоджуються з джерелами проекту.

Але що робити, якщо Eclipse все ще пропонує вам приєднати джерело, навіть якщо я правильно встановив свої класи та їх джерела:

Це майже завжди означає, що Eclipse знаходить клас з іншого місця, ніж ви очікували. Перевірте шлях пошуку джерела, щоб побачити, де він може отримати неправильний клас. Оновіть шлях відповідно до своїх висновків.

Eclipse взагалі нічого не знаходить при попаданні точки перерви:

Це трапляється, коли шлях пошуку джерела не містить класу, який зараз завантажується під час виконання. Навіть якщо клас знаходиться в робочій області, він може бути невидимим для конфігурації запуску, оскільки Eclipse суворо слідує шляху пошуку джерела і приєднує лише залежності проекту, який на даний момент налагоджений.

Виняток становлять пакети налагодження в PDE . У цьому випадку, оскільки час виконання складається з декількох проектів, яким не потрібно оголошувати залежності один від одного, Eclipse автоматично знайде клас у робочій області, навіть якщо він недоступний у шляху пошуку джерела.

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

Це означає, що під час виконання або JVM, або самі класи не мають необхідної інформації про налагодження. Кожен раз, коли класи складаються, інформація про налагодження може бути додана. Щоб зменшити простір пам’яті класів, іноді ця інформація опускається, що призводить до налагодження такого коду болем. Єдиний ваш шанс - спробувати перекомпілювати з увімкненою налагодженням.

Переглядач джерела Eclipse показує інші лінії, ніж ті, які фактично виконуються:

Іноді може бути показано, що порожній простір також виконується. Це означає, що ваші джерела не відповідають вашій версії виконання класів. Навіть якщо ви вважаєте, що це неможливо, це так, то переконайтеся, що ви встановили правильні джерела. Або час виконання відповідає вашим останнім змінам, залежно від того, що ви намагаєтесь зробити.


Відмінна відповідь! Елемент відсутності в цій відповіді є специфічним для пакетів OSGi: Eclipse може знайти джерело, якщо пакет містить OSGI-OPT / src, а пакет знаходиться на шляху побудови проекту Eclipse. Дивіться цей інший пункт StackOverflow Подробиці: stackoverflow.com/questions/9720483 / ...
buzz3791

Можливо, ви можете поглянути на це - у мене немає чого, щоб спробувати вже ..
displayname

Добре знати. Багато теорії, але практичного рішення немає.
MasterJoe2

11

Від http://www.coderanch.com/t/587493/vc/Debugging-Eclipse-Source

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

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


Мені довелося це зробити у вікні налагодження, там, у розділі "Віддалена програма Java" або "Java HotSpot VM".
Абдулл

9

У мене були подібні проблеми з проектом Maven eclipse Maven. Я досить довго боровся з цим питанням, потім намагався відновити проект

mvn clean eclipse:eclipse

і це допомогло.

Примітка: Використання цього підходу буде переплутати плагін m2e, оскільки два підходи дуже різні. m2e додає віртуальний вузол до вашого проекту під назвою "Maven Dependpendations" і просить Maven додати туди всі залежності.

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

Якщо ви не знаєте, як працює класний шлях в Eclipse, такий підхід не рекомендується.


Тільки це працює і для мене! mvn eclipse:eclipseдодайте залежність проекту до шляху збірки Java, щоб він працював. Крім того, плагін m2eclipse додасть залежність проекту лише у "Maven Dependpendations", який знаходиться на вкладці "Бібліотеки", і налагоджувач не може знайти.
наївно

Я не знаю, що сталося, але після цього я більше не бачу своїх залежностей від Maven під "Maven Dependitions".
ім'я відображення

6

Видаліть існуючу конфігурацію налагодження та створіть нову. Це повинно вирішити проблему.


Я стежив за цим, і це спрацювало. Можливо, тому що я також додав потрібну папку проекту Java на новій вкладці "Джерело" конфігурації запуску / налагодження. Можливо, просто додавання відсутньої вихідної папки / проекту на вкладку "Джерело" існуючої конфігурації запуску / налагодження може працювати без попереднього видалення.
xilef

6

Я стикався з тим же питанням, я дотримувався наступних кроків.

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

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

Ви бачите, що на наведеному вище екрані Jre1.8.0_12вибрано.

виберіть використовуваний JRE та натисніть Edit. Тепер ви повинні побачити нижній екран.

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

Клацніть по каталогу, перегляньте Jdk, це має виглядати нижче екрана. введіть тут опис зображення

натисніть ОК, і це зроблено


Використовуйте цей підхід, якщо Eclipse не може завантажувати класи з часу виконання Java (будь-який клас, де ім'я повного типу починається з java.подібного java.lang.String)
Aaron Digulla

4

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

Будь ласка, натисніть кнопку "Прикріпити вихідний код". Потім видаліть папку "за замовчуванням", потім натисніть кнопку "Додати" та перейдіть до свого місця розташування проекту та вкладіть його. Це працювало для мене


3

У моєму випадку, навіть після редагування пошуку джерела та додавання проекту, це не спрацювало. Я налаштував шлях побудови проекту.

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

Після цього я вибрав системну бібліотеку JRE, і вона спрацювала.

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


2

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

Якщо припустити, що у вас є проект Maven і джерела залежностей завантажуються та доступні в локальному сховищі, ви можете встановити m2eclipse , плагін Maven eclipse і подивитися, чи це допоможе у вирішенні вашої проблеми.


1

Можливо, ви маєте вихідний код залежності, доступний Eclipse. Але Eclipse не знає вихідного коду для динамічно завантаженого коду. Наприклад через Maven.

У випадку Maven я рекомендую використовувати плагін run-jetty-run:

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

Як вирішення, ви також можете підключитися до запущеного JVM за допомогою відладчика, і ви побачите код. Крім того, ви можете використовувати плагін для динамічного пошуку джерела для Eclipse звідси:

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

На жаль, це не допомогло мені, оскільки у нього проблеми з шляхами Windows з пробілами.

Я заповнив запит на покращення в Eclipse Bugzilla, і якщо ви погоджуєтесь, що це питання "Джерело не знайдено" має зникнути назавжди, будь ласка, проголосуйте за нього тут:

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

Дякую!

Саса


Тепер у вас є моя підтримка щодо цієї помилки!
Абдулл

1

У моєму випадку в "Приєднати джерело" я додав інший каталог проекту maven на панелі "Конфігурація додавання джерела". Додавання банку останньої версії із сховища м2 не працює. Усі класи з іншого проекту Maven не вдалося відкрити.

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

Тут був тест мого іншого проекту Maven, що містить усі джерела Java.



0

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


0

Інформація: Це можливе рішення, коли ви використовуєте maven (pom.xml) з кількома проектами.

Якщо ви працюєте з maven, переконайтеся, яку версію ви приймаєте всередині відповідно до pom.xml (наприклад, 1.0.1-SNAPSHOT). Можливо, ваш код оновлений, але ваші залежності від pom.xml все ще приймають старі JAR / Snapshots (зі старим кодом).

Пошук проблеми:

  • Спробуйте налагодити відповідний файл.
  • Тому встановіть точку перерви у відповідній області коду.
  • Коли з'явиться "джерело не знайдено" , переконайтеся, що прив’язаний до потрібного проекту (де можна знайти файл .java).
  • Файл компіляції .class відкриється в редакторі IDE.
  • Клацніть «Посилання з редактором», щоб знайти відповідний JAR / Знімок.
  • Тепер переконайтеся, що цей JAR є самим останнім. Можливо, є і новіший. У цьому випадку напишіть номер останньої версії в pom.xml.
  • Потім зробіть оновлення maven та складіть (наприклад, "mvn clean install -U") у правильному каталозі проекту.

0

Якщо ви перебуваєте у затемненні або STS, будь ласка, встановіть та використовуйте GC (GrepCode Plugin), деякий час вам не потрібно приєднувати вихідний .zip файл у ваш проектний шлях, щоб GrepCode працював нормально для вас.


0

У мене була проблема, пов’язана з налагодженням сервера Glassfish в Eclipse. Це відбулося, завантаживши вихідний код з іншого сховища (змінившись з SVN на GitHub). У процесі роботи сервер Glassfish використовував неправильно складені класи, отже, джерело та час запуску не синхронізуються з точками перерв, що з’являються у порожніх рядках.

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

Каталог класів розташований у: / робоча область / glassfish3122eclipsedefaultdomain / eclipseApps / <ваше веб-додаток> / WEB-INF / класи


0

У моєму випадку з проектами tomcat я перевірив проект тут: Вікно - Налаштування - Tomcat - Шлях до джерела - Додати java-проекти до вихідного шляху


0

У моєму випадку версія Maven іншого згаданого проекту не відповідала версії тестового проекту. Як тільки вони були однакові, проблема зникла.


0

Коли ви працюєте в режимі налагодження, натисніть «Змінити пошук джерела» після призупинення з теми. На цьому етапі ми зможемо додати необхідний проект / банку, який містить ваш вихідний код. Після того, як я додав свій поточний проект таким чином, і це вирішило мою проблему. Дякую


0

Якщо ви хочете приєднати вихідний код до будь-якого JAR шляхом автоматичного завантаження, спробуйте використовувати цей плагін Eclipse Java Source Attacher

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


0

У мене виникла ця проблема під час роботи над кодом Java, щоб обробити файл Excel, що містить набір даних, потім перетворити його у файл .csv, я спробував відповіді на цю посаду, але вони не спрацювали. проблема полягала в самих файлах банку. після завантаження потрібних файлів jar один за одним (старіші випуски) та додайте їх до мого проекту, помилка "джерело не знайдено" зникла. можливо, ви можете перевірити свої файли jar. сподіваюся, що це допоможе.


0

це працювало для мене

клацніть правою кнопкою миші на проект -> Властивості -> Збірка розгортання -> додайте свою банку


0

Перейдіть до конфігурації налагодження у затемненні та використовуйте нижчу мету для запуску програми.

-Dmaven.surefire.debug

напр

-Dmaven.surefire.debug exec: java


0

Ну ось ось що для мене спрацювало. Я намагався будь-яке можливе рішення на StackOverflow, яке там було. Я спробував змінити своє джерело розташування в меню налагодження, я встановив плагін m2e Eclipse, я змінився з вбудованого Maven, і я встановив run-jetty-run і нічого не працювало. Тепер я зауважу, що я не намагався переглянути вихідний код зовнішньої людини, я просто хотів побачити свій власний код, але кожен раз, коли я "заходив" на свої методи, які я писав, що були в моєму проекті, я отримував Помилка "Джерело зараз знайдено"

Нарешті, запитавши експерта, моє питання полягало в тому, що перше, що Eclipse робив, - це викликати ClassLoader, який ви можете бачити зі стека налагодження. Все, що я повинен був зробити, це F6 (перехід крок), і тоді це повернуло мене до мого початкового дзвінка, а потім F5 (крок). І був мій код. Зітхніть ... таке просте виправлення, але витрачено годину.


0

Для початківців,

Існує можливість, що файл jar є частиною проекту, який ви ще не включили до робочої області Eclipse.

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


0

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


0

Приєднати джерело -> Додати -> Зовнішній архів -> вибрати банку -> відкрити -> готово

улов шукайте банку з джерелами та прикріплюйте цю банку.

наприклад, банку закінчується джерелами "-sources" Stax2-api-3.4.1


-1

Якщо ви намагаєтеся налагодити проект Maven java, а затемнення не в змозі знайти джерело, спробуйте одне з них.

  1. Спробуйте додати ці рядки в pom.xml
<build>**<sourceDirectory>src/main/java</sourceDirectory>**...

Спробуйте maven-> update, а потім налагоджуйте

  1. Перейдіть до кореневого каталогу проекту;

mvn eclipse: затемнення

тепер спробуйте налагодження


-1

У фотографічному затемненні спробуйте вимкнути "Window-> Preferences-> Java-> Debug-> Use Advanced search source"

Редагувати: У цій версії eclipse є пов’язана помилка, яка призводить до повідомлення "джерело не знайдено" під час налагодження програм Java. Докладніше див. У звіті про помилки bugs.eclipse.org/bugs/show_bug.cgi?id=537699


Гаразд, у цій версії eclipse є пов'язана помилка, яка призводить до повідомлення "джерело не знайдено" під час налагодження програм Java. Див звіт про помилку bugs.eclipse.org/bugs/show_bug.cgi?id=537699 для більш докладної інформації
6pi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.