Java 为什么Eclipse调试器会给出错误;“未找到来源”;似乎没有理由?

Java 为什么Eclipse调试器会给出错误;“未找到来源”;似乎没有理由?,java,eclipse,debugging,Java,Eclipse,Debugging,当我在Eclipse中调试时,经常发生调试器崩溃的情况,显示错误消息“Source not found”(下面是一个文本为“Edit Source Lookup Path”的按钮)。我以前在网上搜索过这个问题的解释/解决方案,但没有找到任何帮助 然而,我现在已经了解了在我的例子中发生的情况:当逐行遍历代码,然后从运行的代码块中跳出时,会发生错误。我不知道术语,但我想很多应用程序可能会在某个时刻进入“待机模式”,其中没有任何代码正在运行。一个示例是等待鼠标单击的图形应用程序。在MouseListe

当我在Eclipse中调试时,经常发生调试器崩溃的情况,显示错误消息“Source not found”(下面是一个文本为“Edit Source Lookup Path”的按钮)。我以前在网上搜索过这个问题的解释/解决方案,但没有找到任何帮助

然而,我现在已经了解了在我的例子中发生的情况:当逐行遍历代码,然后从运行的代码块中跳出时,会发生错误。我不知道术语,但我想很多应用程序可能会在某个时刻进入“待机模式”,其中没有任何代码正在运行。一个示例是等待鼠标单击的图形应用程序。在MouseListener方法中的断点处停止,然后跳出(进入“待机模式”)将导致错误

我在这个问题的底部提供了一个MWE。当我在行上放置断点时会发生错误

System.out.println("You clicked!");
并使用F6逐行跳出方法(“跨步”)。如果我在侦听器的最后一行按F8(“Resume”)而不是F6,则调试器不会崩溃,一切正常

我的问题是:在这种情况下,为什么Eclipse会做如此严重的事情而崩溃?我知道在下面的示例中,源代码中没有一行程序控件在离开侦听器后可以说是“单步执行”,但是为什么不直接进入“待机模式”而不抱怨呢?我能否以某种方式停用此错误,以防止调试会话频繁地过早结束?或者,当F6会导致崩溃时,我需要记住按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);
    }
}
后藤 窗口->首选项->java->已安装的JRE 并删除jre,然后执行“添加”
寻找JDK而不是JRE

Eclipse不会崩溃。您正试图进入一个方法,eclipse不知道在哪里可以找到源(
*.java
)文件,并通知您这一点。下面是如何告诉eclipse在哪里查找。去

窗口->首选项->Java->已安装的JRE,选择您正在使用的JRE并单击编辑

在那里,选择您看到的列表中的所有jar文件,然后单击Source Attachment

在显示的窗口中,选择JDK文件夹中的fille
src.zip
(如果在安装JDK时没有取消选中)。在我现在的机器上,就是这样

C:\ProgramFiles\Java\jdk1.7.0\u 07\src.zip

保存所有更改(可能重新启动eclipse),您将不会再次看到该错误。

可以通过提供类文件的源文件(即.java文件)来解决“找不到源”错误,以便它可以导航到源文件。否则,您可以使用反编译器直接打开.class文件

转到Eclipse-->帮助-->Eclipse市场-->搜索反编译器和 安装它


现在,这个问题可以解决了。

在查看了两个小时有关此错误的帖子后。这是一个立即起作用的。谢谢你,好先生。上帝保佑你。这个问题的答案也很好:有趣!我列出了JDK和JRE,并选择了JDK,但只有在真正从列表中删除JRE之后,它才起作用!谢谢