Eclipse - 未找到来源

时间:2014-02-19 15:04:55

标签: java eclipse openfire

我知道之前已经多次询问过这个问题,但是所提议的解决方案都没有解决我的问题(或者我没有正确实现它)。

我正在为OpenFire开发一个插件,当我在我的插件源中设置断点时,Eclipse会报告“Source not found”。 JAR与OpenFire服务器的构建分开构建。我已经尝试添加JAR并指定源代码目录,但没有骰子。

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

  • 通过选择“文件系统目录”而不是“Java库”
  • 来添加源
  • 通过选择“工作区文件夹”
  • 添加它
  • 在Project Explorer中,将我的插件的源添加到Java Build Path
  • 在Project Explorer中,将我的JAR添加为库并指定源附件

提前感谢任何建议。

6 个答案:

答案 0 :(得分:11)

就个人而言,我在Eclipse JDT中没有很好的经验,在它到达断点时添加源文件夹。我总是喜欢做的是在调试之前添加源文件夹:

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

    之后,您应该能够在虚拟“Referenced Libraries”文件夹中打开源文件(直接位于项目内“JRE System Library”文件夹下方),或者打开参考文件时从JDT编辑器中链接的类文件。如果您能够访问源,那么您还应该能够至少在断点处停止并查看相应的源。

    否则,如果源文件夹确实有效,则必须再次检查:源文件夹或源存档必须包含具有库的根包名称的文件夹(例如,默认Java“src.zip” JDK文件夹内部还包括一个对应的“java”文件夹。如果有疑问,提取存档并选择您感兴趣的包的父文件夹 - 有时源存档可能是混乱或与JDT不兼容。

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

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

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

      

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

答案 1 :(得分:5)

我有这个非常讨厌的问题很长一段时间但终于能够解决它了。在我的例子中,在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文本期间暂停程序流

alt text http://www.SharpDetail.com/p/so_breakpoint.gif

另外一个是:

Eclipse不会崩溃。您正试图进入一个方法,其中eclipse不知道在哪里找到源(* .java)文件并通知您。这是如何告诉eclipse在哪里看。转到

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

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

在显示的窗口中,选择fille src.zip,它位于JDK文件夹中(如果在安装JDK时未取消选中它)。在我现在的机器上,那是

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:0)

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

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

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

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

答案 4 :(得分:0)

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

单击菜单窗口-首选项-调试-步骤筛选,然后检查所有软件包,如下图所示。

(Step Filtering)

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

最诚挚的问候,

答案 5 :(得分:0)

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

public class GenerateInterface implements JavaCall {

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

找不到源

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