2013-02-16 97 views
4

當我在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); 
    } 
} 

回答

21

Eclipse不會崩潰。您正在嘗試進入一種方法,eclipse不知道在哪裏找到源(*.java)文件並通知您這一點。這裏是如何告訴月食在哪裏看。轉到

窗口 - > - >的Java - >安裝的JRE,選擇要使用的JRE,然後單擊編輯

在那裏,選擇您看到的列表中的所有jar文件,然後單擊源附件...

在出現的窗口中,選擇JDK文件夾中的fille src.zip(如果您在安裝JDK時沒有取消選中它)。在機器我在現在,也就是

C:\Program Files\Java\jdk1.7.0_07\src.zip

保存所有的變化(可能重新啓動Eclipse),您將不會再看到這個錯誤。

+0

經過了2小時關於此錯誤的帖子細算。這是一個立即工作的人。謝謝你,先生。上帝保佑你。 – webminer07 2015-10-24 08:39:57

2

轉到 窗口 - >首選項 - > Java的>安裝的JRE 並刪除JRE,然後選擇 「Add」 並查找JDK而不是JRE!

相關問題