为什么Eclipse在调试JBoss时会跳过行?

时间:2010-06-03 18:58:39

标签: java jboss jms

我正在尝试调试在后台使用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时,它会进入方法的结尾。一半的代码永远不会被执行.. ???我的问题是为什么。我假设我的源代码没有很好地附加到正在执行的实际代码。但我该如何更改它?

感谢。

3 个答案:

答案 0 :(得分:5)

当您使用调试器查看的源与应用程序实际运行的代码版本不同时,通常会发生这种情况。可能以前的版本在第1行和第3行有代码,在第2行有空格(或注释),没有其他代码。确保部署了最新的代码(并将调试器配置为指向最新的源代码)并查看它是否仍然存在。

答案 1 :(得分:1)

我刚刚解决了类似的问题。我的java构建路径中有一些配置错误的外部jar。我修理了它,清理并重建了项目。之后一切正常。

答案 2 :(得分:0)

我正在运行MyEclipse 9.1并且通过更改项目名称目录下的.classpath文件解决了我的问题。我不知道它是如何改变的,但它正在将热部署发送到目标。

一旦代码被更改为部署到WEB-INF / classes,调试器行就会变得同步并且一切运行良好。