当前位置: 首页 > 面试题库 >

为什么Eclipse调试器似乎无缘无故地给出错误“找不到源”?

孙熠彤
2023-03-14
问题内容

在Eclipse中调试时,经常会发生调试器崩溃,并显示错误消息“找不到源”(在其下方是带有文本“编辑源查找路径”的按钮)。我以前曾在网上搜索该问题的解释/解决方案,但对我没有任何帮助。

但是,我现在已经弄清楚了我的情况:在逐行浏览代码,然后跳出正在运行的代码块时,会发生错误。我不知道该术语,但是我猜想许多应用程序可能会在某个时刻进入“待机模式”,而当前该代码均未运行。一个示例是等待鼠标单击的图形应用程序。在我的情况下,在MouseListener方法中的断点处停止然后退出(进入“待机模式”)会导致该错误。

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

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

然后使用F6逐行退出方法(“逐步跳过”)。如果我在侦听器的最后一行按F8(“继续”)而不是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);
    }
}

问题答案:

Eclipse不会崩溃。您正在尝试进入一种方法,其中eclipse不知道在哪里可以找到源(*.java)文件并通知您有关信息。这是告诉日食在哪里的方法。去

Window-> Preferences-> Java-> Installed JREs,选择您正在使用的JRE,然后单击Edit

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

在显示的窗口中,选择fille src.zip,它位于JDK文件夹中(如果您在安装JDK时未取消选中它)。在我现在使用的机器上,即

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

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



 类似资料:
  • 经过大量的谷歌搜索,我想我会问这个问题。我有一段代码可以针对 postgres (9.2) 数据库执行以下操作: 开始交易 删除表上的索引(5个索引) 在表中插入一百万行 重新创建索引 提交事务。 我对 postgres 的阅读告诉我,在此操作正在进行时,我应该能够做到这一点并且仍然允许其他用户从表中进行选择(实际上甚至使用现有索引,因为它们尚未删除)。 我实际上发现的是表上的所有其他查询(它们都

  • 我不知所措。 我有一个数据类'Order',它有一个字段。当我试图在接受的方法中使用这个时,我会得到一个编译器错误,其内容如下: 我使用的是Java11、Spring JPA和PostgreSQL。 我从未在Java中见过这样的编译器错误(经过多年的编程),我不知所措。

  • 我有一个数据库,通过我的代码,我将数据库放入一个JsonArray,并开始迭代JsonArray(只查找JsonObjects)。从这里开始,我相信我已经有了这个设置,所以我可以迭代每个JsonObject的属性。然而,每个JsonObject都包含Json字符串和Json数组。现在,我正在进行实验,所以我尝试为数组创建一个手动异常,基本上我是如何设置它的,如果您处理的是Json字符串,那么只需执

  • 我有一个bean生产者和一个bean消费者,在一条路由中使用。生产者是通过一个线程产生的,并监听hazelcast队列上的数据(它可能是其他任何东西,甚至是本地随机生成的数据)。 数据被发送到sedaendpoint,以确保并发性。使用者获取数据并将其转发到另一个hazelcast队列。但也可能是其他任何东西。 然后在300秒内静止处理并停止。 下面是一些代码: 制片人: 谢了!

  • 我正在使用python 2.7。win8上的9。当我尝试使用matplotlib绘图时,出现以下错误: 从pylab导入* 绘图([1,2,3,4]) [matplotlib.lines.Line2D对象位于0x0392A9D0] 我尝试了测试代码“python simple_plot.py--verbose help”,出现了以下警告: $HOME=C:\Users\XX matplotlib数