Eclipse - 未找到来源

std*_*out 10 java eclipse openfire

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

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

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

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

在此先感谢您的任何建议.

Bal*_*der 11

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

  1. 选择项目/属性/库
  2. 选择您的库并"编辑..." 源附件
  3. 选择相应的源文件夹或包含该包的zip/jar

之后,您应该能够在虚拟"Referenced Libraries"文件夹中打开源文件(直接在项目内的"JRE System Library"文件夹下面),或者在JDT编辑器中打开对链接类文件的引用时.如果您能够访问源,那么您还应该能够至少在断点处停止并查看相应的源.

否则,如果源文件夹确实有效,则必须再次检查:源文件夹或源存档必须包含具有库的根包名称的文件夹(例如JDK中的默认Java"src.zip")文件夹还在其根目录中包含相应的"java"文件夹.如有疑问,请提取存档并选择您感兴趣的包的父文件夹 - 有时源存档可能是混乱或与JDT不兼容.

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

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

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

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


jma*_*ail 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"
Run Code Online (Sandbox Code Playgroud)

这阻止了调试器在捕获的NullPointerException.alt文本期间暂停程序流

替代文字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.
Run Code Online (Sandbox Code Playgroud)

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

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

C:\Program Files\Java\jdk1.7.0_07\src.zip.
Run Code Online (Sandbox Code Playgroud)

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


std*_*out 3

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