Java错误:EventDispatchThread.run()行:不可用[本地变量不可用]

6
当我尝试在调试器中启动我的代码时,出现了以下错误。
EventDispatchThread.run() line: not available [local variables unavailable]

代码非常大,我无法在这里发布它,但是以下是一些细节:

这个语句似乎会崩溃,我无法使用调试器进入构造函数:

Satellite satellite = new Satellite();

当我在这一行设置断点并尝试进入构造函数或跳过时,我会得到与上面相同的错误。
以下是Satellite类实现的部分内容:
package tags;

import main.*;
import xml.*;

public class Satellite extends XMLElement {

    public static final String[] ATTRIBUTES = {
        "XmlFileVersion",
        "SatelliteName",
        "xmlns:xsi=@xmlns_xsi",
        "xsi:noNamespaceSchemaLocation=@xsi_noNamespaceSchemaLocation"
    };

    public Satellite() {
        super(ATTRIBUTES);
        setTopLevelElement();

        setAttribute("XmlFileVersion",ValueCenter.Satellite_XmlFileVersion());
        setAttribute("SatelliteName",ValueCenter.Satellite_SatelliteName());
        addElement(new SubSystemList());
    }
}

我确定问题出现在这一行代码: addElement(new SubSystemList());。我在这里添加了一个断点,然后尝试单步执行或跳过,但是现在我得到了一个ClassNotFoundException。调试光标跳转到一个空窗口,显示“找不到源代码”,但源代码百分之百可用,我也有相应的.class文件。另外,Eclipse IDE没有在语法检查时报错。

我不明白这是为什么。是什么原因导致这些错误,为什么我不能使用调试器来逐步执行方法调用?

我已经更新了Java Devs的Eclipse Helios SR1并在我的PC上安装了最新的Java版本。

我知道代码中有一个无限循环,因为如果我不使用调试器运行它,会出现StackOverflowError异常。但不管怎样,难道不能通过调试代码来调查实际问题吗?为什么调试器会出现其他错误或异常而非无调试器运行的结果?

顺便说一下:只有一个线程和顺序执行。

希望有人能帮忙解决。

编辑1:

一些额外的信息。我的工作区有两个项目。其中一个是主程序与卫星等的主要部分。另一个项目中有许多支持类,例如此XMLElement。这种结构适用于许多类。

顺便说一下:我可以跳转到XMLElement.setAttribute方法,但无法跳转到XMLElement.addElement。

另一个奇怪的事情是,卫星与主类位于同一项目中,但仍无法跳转到构造函数。

也许这能帮助解决问题?

3个回答

6
在 Eclipse 中:右键单击项目,选择 属性
以下是您需要更改的设置:

debugger settings

此外,使用 运行 > 运行配置... 找到您的运行配置,选择 选项卡并确保当前项目在源列表中。如果没有,请单击 添加... > Java 项目...

谢谢您的回答,但我已经检查了我的设置,和您写的一样。在运行配置中,我也看到了所有的源文件夹。 - fpdragon
我在重点帖子中添加了额外的信息以进行工作区设置。也许你会注意到这里有些奇怪。 - fpdragon
我现在尝试了一下检查,但它没有起作用。关于构建路径:在两个项目中,我都看到了所需的所有.class文件。在主项目的设置中,我在“属性”>“Java构建路径”>“项目”下包含了支持项目。我通常使用这种方法将其他项目包含在主启动项目中。 - fpdragon
@fpdragon 抱歉,听起来我需要访问您的计算机才能提供帮助 :-) - Sean Patrick Floyd
我无法做到。不知道还有哪里可以看? - fpdragon
显示剩余2条评论

0

EventDispatchThread.run() 行:不可用。这是 Java 桌面应用程序开发人员常见的错误消息,他们主要在 Swing 中工作。我也收到了相同的错误消息,但你解释的步骤并没有解决我的问题。我因另一个问题收到了相同的错误消息。那是 OutOfMemoryError。所以当你收到这个错误消息时,需要自己找到问题,而不是由于某个特定问题引起的。


0

我通过修复抛出NullPointerException的Java Swing代码来解决了这个问题。


你能更具体地说明你是如何修复代码的,以及为什么这样可以解决问题吗? - ryanyuyu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接