我想调试一个静态内部类,它实际上是一个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”语句中设置“正常”断点,以防有人遇到同样的问题。
答案 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,
詹姆斯