Eclipse 调试“找不到源”

2022-09-02 01:16:44

我刚开始使用Eclipse,所以;)轻松。但是,当我尝试调试 JUnit 测试用例时,我得到一个对话框,指出当我在测试方法的代码中到达以下行时,找不到源代码:

Assert.assertEquals(1, contents.size());

我知道我应该去尝试从某个地方下载源代码,但我真的不想这样做,因为我对进入JUnit代码没有兴趣。我有JUnit运行时jar,那么为什么Eclipse希望我拥有所有引用的工具源代码来调试我自己的代码(似乎有点傻)?

我的主要问题是,当源代码不可用时,我如何告诉Eclipse跳过此对话框并允许我继续调试自己的代码?

[编辑]

我已经隔离了原因。似乎Eclipse似乎认为当内部JUnit代码引发异常时它需要源代码。一般来说,无论如何都要告诉它它没有,只是让它抛出某种错误对话框?


答案 1

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

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

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

  1. 单击调试屏幕底部的“断点”窗口
  2. 右键单击“NullPointerException”
  3. 未选中的“已捕获”

这可以防止调试器在捕获的 NullPointerException 期间暂停程序流。

alt text
(资料来源:SharpDetail.com


答案 2

调试调用堆栈在引发异常时将显示 JUnit 源代码行。
但是,如果您没有JUnit的源代码,则不必担心这一点。

如果在调用堆栈中返回一行,则应该看到导致 JUnit 异常的行(源代码)。
这应该足以调试代码。


要将源代码与 JUnit 相关联,您可以在项目的文件中添加 ,并将 与 相关联,如下所示junit.jarjunit-x.y.z-src.jarjunit-x.y.z.jar

http://web.archive.org/web/20130227201940/http://img241.i_mageshack.us/img241/1412/eclipsejunitsrc.png

这将在您的项目中生成一行,如下所示:.classpath

<classpathentry kind="lib" path="junit-x.y.z.jar" sourcepath="junit-x.y.z-src.jar">

注意:实际上,此行中将有文件的完整路径。但是,您也可以使用链接资源来避免文件中的固定值(完整路径)。junit[...].jarclasspathentry.classpath