11

我想调试一个静态内部类,它实际上是一个Callable。每当我尝试在 Eclipse 中设置条件断点时,都会出现断点错误:

com.sun.source.tree.Tree$Kind无法解析类型。它是从所需的 .class 文件中间接引用的。

是什么导致了这个错误?它是使用com.sun.source.tree.Tree$Kind但不提供它的类/包中的错误吗?我如何知道它是哪个类?我该如何解决?


应该正确的示例表达式是:return mRtx.getNode().getNodeKey() == 74;

我已将其更改为mRtx.getNode().getNodeKey() == 74但仍然是相同的错误。最近我发现了这个错误并简单地使用了:

 if (mRtx.getNode().getNodeKey() == 74) {
     System.out.println("bla");
 }

并在“sysout”语句上设置一个“正常”断点,以防万一有人遇到同样的问题。

4

3 回答 3

3

我不确定如何复制它,因为您的描述并没有完全说明问题。

com.sun.source.tree软件包包含在 tools.jar 中,它是 JDK 的一部分,但不是 JRE 的一部分,因此请确保在 JDK 中运行 Eclipse(JAVA_HOME 变量?),也许尝试将项目 JRE 设置为 JDK 文件夹。

我还认为编译器 API 是在 Java 6 中引入的,因此请检查您是否使用的是较低版本。

于 2011-09-26T17:31:02.817 回答
2

也许您应该尝试编辑调试器的源代码查找。

为此,请转到调试透视图,在调试视图(通常显示堆栈的位置)中右键单击终止的运行,然后选择“编辑源查找...”。

然后你可以添加一个查找位置。在这种情况下,您可能应该添加 jre 文件夹中的 tools.jar。

于 2011-09-26T14:28:22.380 回答
1

编译器找不到类型,这是根本问题,但在我看来,这应该只是一个编译时错误,但从我读到的内容暗示,这是一个运行时错误。那是对的吗?

以下是一些提示:

http://java.syntaxerrors.info/index.php?title=Cannot_resolve_type

从所需的 .class 文件间接引用

也许您可以在类上发布更多代码或在 Eclipse 中使用“control + T”来查看类型层次结构,我想知道引用了哪些其他类。

高温下,

詹姆士

于 2011-09-21T13:06:31.120 回答