Eclipse调试"找不到源"

Jam*_*mes 21 java eclipse debugging

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

Assert.assertEquals(1, contents.size());
Run Code Online (Sandbox Code Playgroud)

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

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

[编辑]

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

Chr*_*row 20

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

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

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

  1. 单击调试屏幕底部的"断点"窗口
  2. 右键单击"NullPointerException"
  3. 未选中"抓住"

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

替代文字http://www.SharpDetail.com/p/so_breakpoint.gif


Von*_*onC 10

抛出异常时,调试调用堆栈将显示JUnit源代码行.
但是,如果您没有JUnit的源代码,则不必担心.

如果你回到一行在调用堆栈,你应该可以看到(的线曾引起了JUnit异常源代码).
这应该足以调试您的代码.


要将源与JUnit相关联,您可以junit.jar在项目的库中添加,并将其关联junit-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">
Run Code Online (Sandbox Code Playgroud)

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