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

Unable to insert breakpoint Absent Line Number Information

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


当前回答

我在jetty服务器上使用ANT编译新的。war文件时也遇到了同样的问题。在你必须像之前写的那样设置Java compiler之后,你应该创建相同版本的jdk/jre编译器和构建路径(例如jdk 1.6v33, jdk 1.7, ....)。

我什么都做了,还是没工作。解决方案是删除已编译的.class文件和生成的war文件的目标,现在它的工作:)

其他回答

我在Eclipse 3.4.1中有相同的错误消息,SUN JVM1.6.0_07连接到Tomcat 6.0(在另一台机器上以调试模式运行,SUN JVM1.6.0_16,调试连接正常工作)。

窗口——>首选项——> Java——>编译器——>类文件生成:“添加行号属性生成类文件”被选中。我做了一个干净的重新编译。我取消检查,重新编译,检查,重新编译。我确保项目使用了全局设置。还是一样的信息。

我切换到蚂蚁构建,使用

<javac srcdir="./src/java" destdir="./bin" debug="true">

同样的信息。

我不知道是什么导致了这条消息,为什么它不会消失。尽管这似乎与正在运行的Tomcat调试会话有关:当断开连接时,重新编译可以解决问题。但是在将调试器连接到Tomcat或在连接的调试会话期间设置新的断点时,它又会出现。

然而,事实证明消息是错误的:我确实能够在调试之前和调试期间调试和设置断点(javap -l也显示了行号)。所以请忽略它:)

在使用Spring Tool Suite (STS)启动Java EE项目时,我们也会遇到这个消息,但是我们可以忽略这个消息,因为一切都很好。

在eclipse菜单中,进入“窗口->首选项->Java->编译器” 取消标记复选框“添加行号属性…” 单击“应用”->是 标记复选框“添加行号属性…” 再次申请。 愉快调试

因为我安装了6个不同版本的Java,所以我必须更改默认的JDK遵从性,以匹配我想使用的Java版本。当所有内容都使用Java 1.6构建/编译时,Eclipse默认将编译器遵从级别设置为Java 1.7。

所以我所做的就是

在eclipse菜单中,进入“窗口->首选项->Java->编译器” 在JDK遵从性下,我将编译器遵从性级别从1.7更改为1.6

现在Eclipse不再抱怨“无法插入缺少行号信息的断点”,并且调试断点实际上工作了!!

在编译/构建jar时,我做了上面列出的所有事情-仍然有同样的问题。

最终,在启动服务器时,下面列出的jvmarg更改最终为我工作:

删除/注释了一堆与javaagent和bootclasspath相关的jvm参数。

<!-- jvmarg value=“${agentfile}” /-->

< !贾维德- lib /雷丁——>

<!-- jvmarg value=“-Xbootclasspath/a:/foo /-->

打开/取消注释以下行:

<jvmarg value= -Xdebug />

然后,当我启动服务器时,我就可以到达断点了。我怀疑javaagent在某种程度上干扰了Eclipse检测行号的能力。