在尝试设置断点时,我在Eclipse中得到这个奇怪的错误。

Unable to insert breakpoint Absent Line Number Information

我勾选了编译器选项的复选框,但运气不好。


当前回答

我的情况与此类似:

我正在调试一个JUnit测试 我使用Mockito创建一个间谍,如在spyTask =间谍(new Task()) 我将断点放在我正在监视的类中(在Task.java中)

这个断点会生成问题中的错误,每次我运行Debug As…> JUnit测试

为了解决这个问题,我将断点“向上”移动到实际测试中(在TaskTest.java内部)。一旦执行停止,我将断点添加回原来的位置(在Task.java中)。

我仍然得到相同的错误,但点击“确定”后,断点工作正常。

希望这对大家有所帮助,

-gmale

其他回答

我从黑莓SDK方面得到了这个问题的答案:出于某种原因,无论我在编译器中修改了多少次选项,实际的底层设置文件都没有改变。

在项目的.settings文件夹中查找一个名为org.eclipse.jdt.core.prefs的文件。

在那里你可以手动修改设置:

org.eclipse.jdt.core.compiler.debug.lineNumber=generate

编辑:除此之外,我还注意到有时我可以忽略Eclipse给出的警告,它仍然会停在需要的地方……越来越奇怪……我将此归入我们作为开发人员所需要处理的事情中。

我发现了这条信息的另一个原因。我在编程Scala。解决方案是:

打开运行->调试配置 在主选项卡的底部,在“应用”和“恢复”按钮旁边,有一个文本说明你正在使用哪个启动器,旁边有一个超链接说“选择其他”。这是一个奇怪的UI元素,乍一看并不可行。 使用“选择其他”链接并选择“Scala应用程序(新调试器)启动器”。另一个似乎不能与Scala一起工作。

现在调试应该可以工作了。注意,我已经安装了Scala IDE插件,如果您没有这个选项,那么这个选项可能是不可用的。

以上这些都对我不起作用。 下面的解决方案终于奏效了。 调试配置->类路径->用户条目->(添加要调试的项目的src文件夹)

我在Spring MVC + Maven项目上也有类似的问题;并且花了2个小时试图弄清楚为什么目标文件夹没有更新包含行信息的类。

我建议您清理所有内容,并确保在继续进行任何构建之前从文件夹中删除所有类。

确保在项目的属性> Java编译器有“添加行号属性生成类字段(由调试器使用)选择。 清洁所有项目。(菜单>项目>清洁…)确保目标文件夹为空。 构建项目(菜单>项目>构建项目) 确保在目标目录中生成了新类。 运行调试;如果在WebServer上运行,请确保在“调试”模式下运行web服务器。

如果有疑问——编译后的.class文件是否包含行号——在Eclipse中打开.class文件。Eclipse将反编译文件并告诉您行号是否存在。

不知道这是否仍然相关,也许另一个水手会发现这有用。

当已编译的类文件关闭调试标志时,将出现该消息。

在eclipse中,您可以通过前面提到的选项打开它,

窗口—>首选项—> Java—>编译器—>类文件生成:“添加行号属性生成类文件”

但是如果您有一个jar文件,那么您将得到编译后的输出。解决这个问题没有简单的方法。

如果您可以访问源代码并使用ant来获取jar文件,那么您可以如下所示修改ant任务。

  <javac  destdir="${build.destDir}" srcdir="${build.srcDir}" source="1.6" fork="true" target="${javac.target}" debug="on" debuglevel="lines,vars,source" deprecation="on" memoryInitialSize="512m" memoryMaximumSize="1024m" optimize="true"   >

快乐的调试. .

裁判: http://doc.sumy.ua/prog/Java/javanut/ch16_04.htm