【问题标题】:Eclipse / conditional breakpoint results in BreakpointExceptionEclipse / 条件断点导致 BreakpointException
【发布时间】:2011-11-09 07:47:14
【问题描述】:

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

【问题讨论】:

  • 您能否完成您的问题以澄清您提到的所有课程?真正的问题是什么?
  • 请在此处提及,哪个 JVM 用于运行 eclipse 和运行您调试的软件。

标签: java eclipse debugging conditional-breakpoint


【解决方案1】:

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

这里有一些提示:

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

Indirectly referenced from required .class file

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

HTH,

詹姆斯

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 谢谢。这为我解决了这个问题。它只要求“选择” 2(非托管源是在项目设置中作为链接源提供的另一个源,但不包含在运行路径中)但它是可管理的。
    【解决方案3】:

    我不确定如何复制它,因为您的描述并不能说明太多。

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

    我也认为 Compiler API 是在 Java 6 中引入的,所以请检查您是否使用的是较低版本。

    【讨论】:

    • 感谢您的回答 (+1)。如果 jamesDrinkard 没有向我展示伟大的网站 java.syntaxerrors.info,我会给你 +50。
    • 在我的机器上,我必须从我的 java 安装中手动添加 tools.jar(即使我使用的是 JDK):Window > Preferences > Installed JREs,选择一个 JDK,点击“edit”如果它尚不存在,则添加 lib-subfolder 中的 tools.jar。
    猜你喜欢
    • 2012-05-02
    • 2023-04-07
    • 2015-08-23
    • 2023-03-29
    • 1970-01-01
    • 2021-03-30
    • 2019-05-16
    • 2013-12-02
    • 2013-01-01
    相关资源
    最近更新 更多