当我尝试在调试器中启动代码时出现以下错误。
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
。调试光标跳转到“未找到源”的空窗口。写的但是Source是100%可用的,我也得到了相应的.class文件。另一件事是Eclipse IDE在语法检查上不会抛出任何错误。
我不明白这一点。什么可能导致这些错误,为什么我不能使用调试器来完成方法调用?
我已经为Java Devs更新了Eclipse Helios SR1并在我的电脑上安装了最新的java版本。
我知道代码在这里的任何地方都有无限循环,因为如果我在没有调试器的情况下运行它,我会得到一个StackOverflowError
异常。但无论如何,不应该通过代码调试,调查真正的问题吗?为什么调试器会因非调试器运行而导致其他错误或异常崩溃?
btw:只有一个线程和顺序执行。
希望有人可以提供帮助。
编辑1:
一些额外的信息。我的工作区有两个项目。其中一个是卫星和其他主要节目。在另一个项目中,我有很多支持类,比如这个XMLElement。这种结构适用于许多类。
顺便说一句:我可以进入XMLElement.setAttribute方法,但我无法进入XMLElement.addElement。
另一个奇怪的事情是,Satellite与主类在同一个项目中,但也不可能进入构造函数。
也许这有帮助?
答案 0 :(得分:5)
在Eclipse中:右键单击项目并选择Properties
。
以下是您需要更改的设置:
此外,使用Run > Run Configurations ...
找到您的运行配置,选择Source
标签并确保当前项目位于来源列表中。如果没有,请点击Add... > Java Project ...
答案 1 :(得分:0)
EventDispatchThread.run()行:不可用。这是Java桌面应用程序开发人员的常见错误消息,他们主要在Swing中工作。我也得到了相同的错误消息,但你解释的步骤并没有解决我的问题。我得到了另一个问题的相同的错误消息。这是OutOfMemoryError.So当你收到此错误消息时,你需要找到自己的问题,这是不是由于某些特殊问题。
答案 2 :(得分:0)
我通过修复抛出NullPointerException的Java Swing Code解决了这个问题。