Почему отладчик Eclipse выдает ошибку «Источник не найден», казалось бы, без причины?

Когда я отлаживаю в Eclipse, часто случается, что отладчик вылетает, отображая сообщение об ошибке «Источник не найден» (под которым находится кнопка с текстом «Изменить путь поиска источника»). Ранее я искал в Интернете объяснение / решение этой проблемы, но не нашел мне никакой помощи.

Но теперь я выяснил, что происходит в моем случае: ошибка возникает при пошаговом прохождении кода, а затем при выходе из блока выполняющегося кода. Я не знаю терминологию, но я думаю, что многие приложения могут перейти в «режим ожидания» в какой-то момент, когда ни один из его кодов в настоящее время не работает. Одним из примеров является графическое приложение, ожидающее щелчка мышью. Остановка в точке останова в методе MouseListener, а затем выход из нее (в «режим ожидания») вызовет ошибку в моем случае.

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

System.out.println("You clicked!");

и шаг за шагом выходите из метода, используя F6 («Step Over»). Если я нажимаю F8 («Возобновить») вместо F6 в последней строке прослушивателя, отладчик не падает, и все в порядке.

Мой вопрос: почему Eclipse делает что-то настолько серьезное, что в этом случае происходит сбой? Я понимаю, что в исходном коде нет строки, в которой можно сказать, что элемент управления программы "шагнул" после выхода из прослушивателя в приведенном ниже примере, но почему бы просто не перейти в "режим ожидания" без жалоб? Могу ли я как-то деактивировать эту ошибку, чтобы мои сеансы отладки не встречались с их преждевременным завершением? Или я просто должен помнить, чтобы нажать F8 вместо F6, когда последний вызовет сбой?

package app;

import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;


public class TestFrame extends JFrame {
    public TestFrame() {
        getContentPane().setPreferredSize(new Dimension(200, 200));
        getContentPane().addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.out.println("You clicked!");
            }
        });
        pack();
    }

    public static void main(String[] args) {
        JFrame testFrame = new TestFrame();
        testFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        testFrame.setVisible(true);
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос