我正在尝试调试在后台使用JMS的Web服务调用。我让JBoss在调试模式下运行。当我在Eclipse中按F6(执行当前行)时,会跳过某些行。我有这个方法:
@Override
public void log(MsgPayload payload) {
1 Date startTime = new Date();
logger.info("Publishing with BufferedPublisher.java start time:"+startTime);
3 publisher.send(payload);
Date endTime = new Date();
logger.info("Publishing with BufferedPublisher.java end time:"+endTime);
long mills = endTime.getTime()-endTime.getTime();
double secs = mills/1000.0;
logger.info("Publishing with BufferedPublisher.java total time (seconds):"+secs);
}
那会发生什么?我在第1行有断点。当我按下F6时,它会跳过该行并转到第3行。当我再次按F6时,它会进入方法的结尾。一半的代码永远不会被执行.. ???我的问题是为什么。我假设我的源代码没有很好地附加到正在执行的实际代码。但我该如何更改它?
感谢。
答案 0 :(得分:5)
当您使用调试器查看的源与应用程序实际运行的代码版本不同时,通常会发生这种情况。可能以前的版本在第1行和第3行有代码,在第2行有空格(或注释),没有其他代码。确保部署了最新的代码(并将调试器配置为指向最新的源代码)并查看它是否仍然存在。
答案 1 :(得分:1)
我刚刚解决了类似的问题。我的java构建路径中有一些配置错误的外部jar。我修理了它,清理并重建了项目。之后一切正常。
答案 2 :(得分:0)
我正在运行MyEclipse 9.1并且通过更改项目名称目录下的.classpath文件解决了我的问题。我不知道它是如何改变的,但它正在将热部署发送到目标。
一旦代码被更改为部署到WEB-INF / classes,调试器行就会变得同步并且一切运行良好。