Java 无法在eclipse中放置断点

Java 无法在eclipse中放置断点,java,eclipse,debugging,breakpoints,jdk1.6,Java,Eclipse,Debugging,Breakpoints,Jdk1.6,我正在windows vista home premium 64位上使用eclipse europa(3.5),使用JDK 1.6.0_18(32位) 通常情况下,我可以很好地设置断点;但是,对于不属于项目的特定类(该类位于.JAR文件中(.JAR文件是项目的一部分)),尽管我已将源目录附加到此.JAR文件,但我无法在此类中放置断点 如果我双击断点窗格(左边框),我会注意到一个类断点被放置。我想知道是否没有调试信息;然而,我们发现这个特殊的类是使用ant/javac任务,使用debug=“tru

我正在windows vista home premium 64位上使用eclipse europa(3.5),使用JDK 1.6.0_18(32位)

通常情况下,我可以很好地设置断点;但是,对于不属于项目的特定类(该类位于.JAR文件中(.JAR文件是项目的一部分)),尽管我已将源目录附加到此.JAR文件,但我无法在此类中放置断点

如果我双击断点窗格(左边框),我会注意到一个类断点被放置。我想知道是否没有调试信息;然而,我们发现这个特殊的类是使用ant/javac任务,使用debug=“true”和debuglevel=“lines,vars,source”编译的。我甚至在这个类上运行jad来确认它确实包含调试信息

那么,为什么eclipse阻止我放置断点呢

编辑:为了让每个人都了解上下文,这是一个在Tomcat6.0下运行的webapp。在外部启动tomcat之后,我正在从eclipse远程调试应用程序。这个应用程序运行得很好。我试图理解上面这个类的行为,但我无法理解,因为eclipse不允许我设置BP

附言:我在这里看到一些帖子说BPs没有被击中,但在我的情况下,我无法放置BP

p.p.S:在试用JDK1.6.0_18之前,我试用了JDK1.6.0_16


感谢您的指点。

听起来Eclipse在类路径上找不到jar文件,尽管您确实说过jar文件是项目的一部分。如果您正常运行应用程序,会发生什么情况?您是否得到ClassDefNotFoundException或类似的结果


如果您检查Run/Debug配置上的选项卡,您应该能够在运行时看到类路径上有哪些路径和jar文件。您还可以添加构建应用程序时不需要但运行应用程序时需要的jar文件。

尝试查看您的配置Java->debug->Step filtering 有时它是启用的,您不能在过滤包内停止

尽管我已将一个源目录附加到此.JAR文件,但我无法在此类中放置断点


你说“源目录”。你确定,它是用来编译jar的同一个版本吗?如果附加不同的源代码版本,行号可能不匹配,断点也不会命中。

我知道eclipse中有一个错误,断点不能与特定版本的jdk 1.6.x一起使用
有关更多信息,请查看使用名为Jadclipse的插件在运行时反编译jar,将断点放在调用jar方法的点上,然后按F6,您应该可以进入jar方法。

步骤1:切换/启用断点 在要开始调试代码的代码行或方法入口点设置断点。右键单击代码行旁边编辑器的左边距,弹出关联菜单。在关联菜单中选择“切换断点”

步骤2:配置断点以停止执行 要开始调试,执行应在指定的断点处停止。为此,请单击断点属性并执行以下操作:

1. Check Hit count
2. Specify value as 1
3. Select “Suspend thread” option
这将在程序到达断点时停止执行

步骤3:切换到调试透视图

在Eclipse中,选择窗口–>打开透视图–>调试

步骤4:在调试模式下运行

现在在调试模式下运行程序。选择运行–>调试

现在程序开始在调试模式下运行,您将看到线程的状态为“正在运行”

当程序到达断点时,线程的状态从“运行”变为“挂起”

步骤5:使用表达式\Watch variables\Inspect调试代码

现在代码在断点处停止。您可以使用监视变量/表达式来监视调试变量的当前值。 假设您在名为“counter”的变量处设置断点,程序在计数器变量处停止 添加变量名为“counter”的表达式,该表达式允许您在执行程序时监视变量的值 您也可以右键单击计数器变量并从上下文菜单中选择“Inspect” 如果它是一个方法,那么,选择方法名称并单击“逐步进入选择”。这将允许您逐行监视或调试方法执行

第6步:使用F6键进入方法


要“单步执行”当前方法中的下一个可执行代码行,请按“F6键”。这将把程序控制从当前代码行传递到下一个可执行代码行。

当尝试为.jsp页面添加断点时,结果表明该页面不是用jsp编辑器打开的,这阻止了断点的设置。

只需简单刷新.jar文件就可以了

我能够在同一个包的所有其他类文件中放置断点,除了一个。我观察到的是,当我在编辑器中打开这个类文件并选择“与编辑器链接”时,eclipse并没有将我带到这个类文件本身,而只是带到这个类文件的包

刷新后,“与编辑器链接”起作用,我能够放置断点


如果有人能解释这种行为,那将很有帮助。

hi richj,谢谢你的注释。当我尝试使用CTRL+SHIFT+T(打开类型)查找类时,我能够打开那个特定的类,eclipse向我展示了我附加到.JAR的源代码。虽然我能够将BPs放在属于项目的类上,但我无法将BPs放在上面的类上。这意味着JAR文件位于构建类路径上。运行时类路径不一定与构建类路径相同,但我承认这是一个长期目标,因为你通常需要积极地