Eclipse /条件断点导致BreakpointException

时间:2011-09-02 16:17:41

标签: java eclipse debugging conditional-breakpoint

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

  

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

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


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

我已将其更改为mRtx.getNode().getNodeKey() == 74,但仍然是同样的错误。最近我发现了这个bug并且只是使用了:

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

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

3 个答案:

答案 0 :(得分:3)

我不确定如何重现它,因为你的描述并不是很清楚。

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

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

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

以下是一些提示:

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

Indirectly referenced from required .class file

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

HTH,

詹姆斯