【问题标题】:Eclipse remote debugging, breakpoints - .java VS .class confusionEclipse 远程调试,断点——.java VS .class 混淆
【发布时间】:2011-04-13 17:19:27
【问题描述】:

我正在 Eclipse 中远程调试 Java 应用程序。 (一堆 Alfresco 项目,附带 ZIP 文件中的源代码。)

断点确实有效,但是:

1) 每当我在 *.class 文件中设置断点时,Eclipse 都会在到达断点时打开 *.java 文件。

2) 当我在 *.java 文件中设置断点时,会创建一个 new 断点(显然独立于 *.class 中的设置),并且在断点列表中它不提供“转到文件”选项。

3) 指示断点的项目符号永远不会显示在 *.java 文件中;无论断点是从 *.class 还是 *.java 文件中创建的。

(如果不是 2 和 3,我当然会很乐意坚持使用 *.java 文件。)

我做错了吗? ...或者这是通常的行为,我对此无能为力?

【问题讨论】:

  • 您的源文件是否只有一个或多个项目?告诉我当你按下 Ctrl+Shift+T 打开一个 Java 类时,Foo 它只显示一个 Foo 或多个?
  • 只有一个。 (而且 Ctrl+Shift+R 也不显示 *.java 文件。)

标签: java eclipse breakpoints remote-debugging


【解决方案1】:

在项目的“Java 构建路径”首选项中检查“订购和导出”。
(或在运行配置启动器的“类路径”选项卡中)

对于本地项目,如果输出目录(“build”或“bin”或“cls”或...)出现在“src”之前在你正在调试的东西中,你会遇到那种“断点”混淆。

对于远程项目,如果 jar 附加了源代码,它应该可以工作。

【讨论】:

  • “构建”文件夹根本没有在“订购和导出”选项卡中列出。我认为这里的关键字是“远程”(调试),即我自己的代码还没有涉及。
  • 例如 LoginBean.class 是从 Referenced Libraries 中的 alfresco-web-client-3.3g.jar 链接的,此 JAR 已附加 ZIP 中的源代码。即使我将这个 JAR 移到 Order 和 Export 中的第一位,也没有什么不同。
  • @Jaroslav:不确定,但您可以尝试将源直接添加为“库”,并将其放在 alfresco-web-client-3.3g.jar 之前(与附加源保持相同的 zip)
  • /src 添加到 'Libraries',移动到 'Order and Export' 的第一位,Eclipse 仍然打开 LoginBean.java :(
  • @Jaroslav: "still opens LoginBean.java": 哎呀,这实际上是我的意图:断点在那个 Java 文件中有效吗?