當我在Eclipse中調試時,經常發生調試器崩潰,顯示錯誤消息「Source not found」(在其下面是帶有文本「Edit Source Lookup Path」的按鈕)。我之前在網上搜索過這個問題的解釋/解決方案,但沒有發現對我有任何幫助。爲什麼Eclipse調試器似乎沒有理由給出錯誤「Source not found」?
但是,我現在已經弄清楚在我的情況下發生了什麼:當逐行逐行掃描代碼,然後逐出一個正在運行的代碼塊時,會發生錯誤。我不知道這個術語,但我猜很多應用程序可能會在某些時候進入「待機模式」,目前沒有任何代碼正在運行。一個例子是等待點擊鼠標的圖形應用程序。在MouseListener方法中停止斷點,然後退出(進入「待機模式」)將導致我的錯誤。
我在這個問題的底部提供了一個MWE。當我放置一個斷點在線路
System.out.println("You clicked!");
,並使用由F6線走出方法線的(「單步跳過」)發生了錯誤。如果我在監聽器的最後一行按F8(「Resume」)而不是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小時關於此錯誤的帖子細算。這是一個立即工作的人。謝謝你,先生。上帝保佑你。 – webminer07 2015-10-24 08:39:57