Eclipse отладка "источник не найден" - PullRequest
20 голосов
/ 25 декабря 2009

Я только начал использовать Eclipse, так что будьте спокойны со мной;). Но при попытке отладки тестового примера JUnit я получаю диалоговое окно, в котором говорится, что источник не найден, когда я попадаю на эту строку в коде в моем методе теста:

Assert.assertEquals(1, contents.size());

Я знаю, что, вероятно, мне следует пойти и попытаться скачать исходный код откуда-то, но я действительно не хочу этого, потому что не заинтересован входить в код JUnit. У меня есть jar времени выполнения JUnit, так почему же Eclipse ожидает, что у меня будет весь исходный код инструментов, на который есть ссылки, для отладки моего собственного кода (кажется несколько глупым)?

Мой главный вопрос: как я могу сказать Eclipse пропустить это диалоговое окно, когда исходный код недоступен, и разрешить мне продолжить отладку собственного кода?

[Изменить]

Я выделил причину этого. Кажется, что Eclipse, кажется, думает, что ему нужен источник, когда внутренний код JUnit создает исключение. В общем, можно ли сказать, что это не так, и вместо этого просто вызвать какой-то диалог об ошибке?

Ответы [ 6 ]

20 голосов
/ 29 мая 2010

У меня была эта очень раздражающая проблема в течение долгого времени, но я наконец смог ее решить. В моем случае исключение пустого указателя было выдано где-то в функции Java Transformer.IsRuntimeCode (ProtectionDomain ).

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

Чтобы этого не случилось, я:

  1. Кликнул в окне «Точки останова». в нижней части отладки экран
  2. Щелкните правой кнопкой мыши "NullPointerException"
  3. Не проверено "Пойман"

Это не позволило отладчику приостановить выполнение программы во время перехваченного исключения NullPointerException.

альтернативный текст http://www.SharpDetail.com/p/so_breakpoint.gif

10 голосов
/ 25 декабря 2009

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

Если вы вернетесь на одну строку в стеке вызовов, вы должны увидеть строку ( вашего исходного кода), которая вызвала исключение JUnit.
Этого должно быть достаточно для отладки вашего кода.


Чтобы связать источник с JUnit, вы можете добавить junit.jar в библиотеки вашего проекта и связать junit-x.y.z-src.jar с junit-x.y.z.jar, примерно так :

http://web.archive.org/web/20130227201940/http://img241.i_mageshack.us/img241/1412/eclipsejunitsrc.png

Это создаст в .classpath вашего проекта строку вроде:

<classpathentry kind="lib" path="junit-x.y.z.jar" sourcepath="junit-x.y.z-src.jar">

Примечание: на самом деле в этой строке classpathentry будет указан полный путь к файлам junit[...].jar. Но вы также можете использовать Связанные ресурсы , чтобы избежать фиксированного значения (полного пути) в файле .classpath.

2 голосов
/ 09 июня 2012

У меня была похожая проблема. Я исправил это, щелкнув правой кнопкой мыши по папке проекта в проводнике пакетов и выбрав «Обновить». Источник кода был не синхронизирован с отладчиком, и это исправило его. Сообщение Transformer.IsRuntimeCode (ProtectionDomain) Source not found больше не отображается.

1 голос
/ 24 октября 2012

Используйте пошаговый фильтр, чтобы не проходить через пакеты ... junit ... Щелкните правой кнопкой мыши по трассировке стека и выберите Filter Package. Возможно, вам придется сначала включить фильтрацию с помощью пошаговых фильтров. ~~~

1 голос
/ 25 декабря 2009

Вместо этого рассчитайте content.size () в отдельной строке или установите точку останова для метода.

Также обратите внимание, что представление junit в Eclipse позволяет перемещаться по трассе стека.

0 голосов
/ 04 сентября 2012

У меня была похожая проблема с другой банкой, даже когда я указывал на источник, он запрашивал его снова. Я смог решить эту проблему, скомпилировав банку с debug="on" на ANT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...