Eclipse - 找不到源

Posted

技术标签:

【中文标题】Eclipse - 找不到源【英文标题】:Eclipse - Source not found 【发布时间】:2014-03-20 00:18:56 【问题描述】:

我知道这个问题已经被问过很多次了,但是没有一个建议的解决方案能解决我的问题(或者我没有正确实施它们)。

我正在为 OpenFire 开发插件,当我在插件源中设置断点时,Eclipse 报告“找不到源”。 JAR 与 OpenFire 服务器的构建是分开构建的。我试过添加 JAR 并指定源代码目录,但没有骰子。

这是我正在遵循的过程:当我点击断点时,我点击“编辑源查找路径”,点击“添加”,Java 库,用户库,点击用户库,添加我的库(尝试了“添加JARs”和“Add External JARs”),然后指定包含源代码的文件夹。我也试过:

通过选择“文件系统目录”而不是“Java 库”来添加源 通过选择“工作区文件夹”来添加 在项目资源管理器中,将我的插件的源代码添加到 Java 构建路径 在 Project Explorer 中,将我的 JAR 添加为库并指定源附件

提前感谢您的任何建议。

【问题讨论】:

当您遇到断点时,Eclipse 可能会显示一个 .class 文件。您可以附加源目录(前提是您已将源作为另一个 Eclipse 项目导入)。 【参考方案1】:

就我个人而言,在遇到断点时添加源文件夹时,我在 Eclipse JDT 方面没有什么好的经验。我一直喜欢做的是在调试之前添加源文件夹:

    选择项目/属性/库 选择您的库并“编辑...”source attachment 选择相应的源文件夹或包含包的 zip/jar

之后,您应该能够在虚拟“Referenced Libraries”文件夹(项目内“JRE System Library”文件夹的正下方)中或打开引用时打开源文件从 JDT 编辑器中到链接的类文件。如果你能够访问源代码,那么你至少也应该能够在断点处停下来查看对应的源代码。

否则,您将不得不再次检查源文件夹是否真的有效:源文件夹或源存档必须包含具有库根包名称的文件夹(例如默认的 Java“src.zip” JDK 文件夹中的根目录还包含一个相应的“java”文件夹)。如有疑问,请提取存档并选择您感兴趣的包的父文件夹 - 有时源存档可能会乱七八糟或与 JDT 不兼容。

如果这已得到保证,但仍然无法正常工作,则很可能您的链接源文件夹与库的编译版本不对应。通常 JDT 会很好地处理这种不一致,但是如果你尝试打开一个与相应类文件完全不同的源文件,你就会遇到问题。在这种情况下,我建议要么下载库的正确源代码版本,要么从源代码重新编译库,如果一切都失败了。

如果使用 JDT 编辑器打开引用的源文件确实可以正常工作,并且在调试过程中输入断点时仍然无法打开源文件,那么类文件很可能是对应的 missing the line numbers源文件。同样,在这种情况下,您将不得不从源代码重新编译库。

最后,还可以通过在启动配置的源选项卡中指定源文件夹或存档来覆盖默认源查找。但是,当您的构建路径配置正确时,您通常不需要这样做。来自Eclipse Help:

Source 选项卡定义了在调试 Java 应用程序时用于显示源代码的源文件的位置。默认情况下,这些设置源自关联项目的构建路径。您可以在此处覆盖这些设置。

【讨论】:

反应很好。虽然这些建议没有解决我的问题,但它帮助我了解了 Eclipse 在这方面的工作原理。【参考方案2】:

我有这个非常烦人的问题很长一段时间,但终于能够解决它。在我的例子中,在 Java 的 Transformer.IsRuntimeCode(ProtectionDomain) 函数的某个地方抛出了一个空指针异常。

我真的不需要知道这一点,因为异常正在被捕获和处理,但是每次发生这种情况时 eclipse 都会暂停调试并告诉我源不可用。结果,我不得不不断按下按钮来继续执行代码。

为了防止这种情况发生,我:

 1. Clicked on the "Breakpoints" window at the bottom of the debugging
    screen
 2. Right clicked "NullPointerException"
 3. Unchecked "Caught"

这可以防止调试器在捕获 NullPointerException.alt 文本期间暂停程序流

(来源:SharpDetail.com)

这又是一个:

Eclipse 不会崩溃。您正在尝试进入一种方法,其中 eclipse 不知道在哪里可以找到源 (*.java) 文件并通知您这一点。这是告诉日食在哪里看的方法。前往

Window->Preferences->Java->Installed JREs,select the JRE you are using and click Edit.

在此处,选择您看到的列表中的所有 jar 文件,然后单击 Source Attachment...。

在显示的窗口中,选择您的 JDK 文件夹中的 fille src.zip(如果您在安装 JDK 时没有取消选中它)。在我现在使用的机器上,就是

C:\Program Files\Java\jdk1.7.0_07\src.zip.

保存所有更改(可能重新启动 eclipse),您将不会再看到该错误。

【讨论】:

【参考方案3】:

事实证明,这个解决方案是虎头蛇尾的。当 Balder 的建议不起作用时,我尝试调试其中一个常用的 OpenFire 插件,并且效果很好。然后我从头开始创建了一个新插件,除了将源代码添加到项目(右键单击项目-> 新建-> 源文件夹)之外,它也工作得很好。我不知道为什么 Eclipse 拒绝查看我的原始插件的源代码,但是我将所有代码和库都移到了新插件中,并且调试按预期工作。

【讨论】:

【参考方案4】:

下载二进制版本的应用程序时,很多时候您将 jar 文件作为引用库放在 eclipse IDE 中。通常通过配置构建路径来完成。但是二进制文件没有源文件。您有应用程序的二进制版本和源版本。

一种简单的方法是下载您也使用 maven 构建项目的源库。 Keep somehwere,可能在您的项目工作区中。

现在在看到类文件(来自 eclipse,jar 已爆炸)时,您可能会看到找不到源,很好....下面有一个按钮并单击该按钮,将打开一个新窗口,然后选择添加外部文件夹。

将它引用到您下载的源(不是二进制文件)的 src 文件夹并保存在上面所说的某个位置,它将显示该类的详细信息。

【讨论】:

【参考方案5】:

我通过以下操作解决了这个问题:

点击菜单Window - Preferences - Debug - Step Filtering 并检查所有包,如下图。

(Step Filtering)

然后,再次调试您的项目,就是这样。

最好的问候,

【讨论】:

【参考方案6】:

就我而言,我在类声明中有一个断点。我的意思是在下一行。

public class GenerateInterface implements JavaCall

因此,调试器在该行停止并显示以下消息:

找不到来源

我认为无意识地激活了该行中的断点。

【讨论】:

以上是关于Eclipse - 找不到源的主要内容,如果未能解决你的问题,请参考以下文章

Centos yum源找不到包及问题修复

Centos yum源找不到包及问题修复

Centos yum源找不到包及问题修复

NPM 7 workspace模式安装依赖执行找不到sentry-cli

NPM 7 workspace模式安装依赖执行找不到sentry-cli

NPM 7 workspace模式安装依赖执行找不到sentry-cli