【问题标题】:Java Error: EventDispatchThread.run() line: not available [local variables unavailable]Java 错误:EventDispatchThread.run() 行:不可用 [局部变量不可用]
【发布时间】:2011-02-22 16:28:20
【问题描述】:

当我尝试在调试器中启动我的代码时出现以下错误。

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。调试光标跳到“找不到源”的空窗口。已编写,但源代码 100% 可用,并且我还获得了相应的 .class 文件。另一件事是 Eclipse IDE 在语法检查时不会抛出任何错误。

我不明白这一点。什么会导致这些错误?为什么我不能使用调试器来遍历方法调用?

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

我知道代码在这里的任何地方都有一个无限循环,因为如果我在没有调试器的情况下运行它,我会得到一个StackOverflowError 异常。但是无论如何,不​​应该可以通过代码进行调试,以调查真正的问题吗?与非调试器运行相比,为什么调试器会因其他错误或异常而崩溃?

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

希望有人能提供帮助。

编辑 1:

一些附加信息。我的工作区有两个项目。其中之一是卫星和其他主程序。在另一个项目中,我有许多支持类,例如 XMLElement。这种结构适用于许多类。

顺便说一句:我可以进入 XMLElement.setAttribute 方法,但不能进入 XMLElement.addElement。

另一个奇怪的是,Satellite 与主类在同一个项目中,但也无法进入构造函数。

也许这有帮助?

【问题讨论】:

    标签: java eclipse debugging classnotfoundexception


    【解决方案1】:

    在 Eclipse 中:右键单击项目并选择Properties

    以下是您必须更改的设置:

    另外,使用Run > Run Configurations ... 找到您的运行配置,选择Source 选项卡并确保当前项目在源列表中。如果没有,请点击Add... > Java Project ...

    【讨论】:

    • 谢谢你的回答,但我检查了我的设置,我和你写的一样。同样在运行配置中,我看到了所有源文件夹。
    • 我在帖子中添加了其他信息,重点关注工作区设置。也许你注意到这里有些奇怪。
    • @fpdragon 在Source 选项卡中,您是否尝试过检查Check for duplicate source files on the path 选项?
    • @fpdragon,您是否检查过构建路径并确认一个项目实际上引用了另一个项目(可能不是来自本地存储库的 jar)?
    • 我现在尝试了检查,但它不起作用。到构建路径:在两个项目中,我都看到了我需要的所有 .class 文件。在主项目的设置中,我在“属性”>“Java 构建路径”>“项目”下包含了支持项目。我通常使用它来获取包含在主启动项目中的其他项目。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 您能否更具体地说明您是如何修复代码的,以及为什么这样可以解决问题?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      • 2018-11-02
      相关资源
      最近更新 更多