Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的Eclipse调试器第一次未能进入?_Java_Eclipse - Fatal编程技术网

Java 为什么我的Eclipse调试器第一次未能进入?

Java 为什么我的Eclipse调试器第一次未能进入?,java,eclipse,Java,Eclipse,我是Java新手,正在学习在Eclipse中调试。我遇到了一个奇怪的错误,调试器第一次未能进入函数,但第二次成功进入函数。具体来说,以下是我的步骤 跳过,直到我达到我想要检查的功能 进入函数。下面是我遇到错误“找不到源”的时候 步进返回。调试器成功返回到上面的上一个堆栈帧 再次进入函数。奇怪的是,这一次你要开始工作了 有什么不对劲?为什么需要两个“步骤”来检查我想要的函数?当一行上有两条语句,而内部语句没有源代码(例如基本JRE)时,可能会发生这种情况 在这一行中,进入的第一步将进入内部对象上的

我是Java新手,正在学习在Eclipse中调试。我遇到了一个奇怪的错误,调试器第一次未能进入函数,但第二次成功进入函数。具体来说,以下是我的步骤

  • 跳过,直到我达到我想要检查的功能
  • 进入函数。下面是我遇到错误“找不到源”的时候
  • 步进返回。调试器成功返回到上面的上一个堆栈帧
  • 再次进入函数。奇怪的是,这一次你要开始工作了

  • 有什么不对劲?为什么需要两个“步骤”来检查我想要的函数?

    当一行上有两条语句,而内部语句没有源代码(例如基本JRE)时,可能会发生这种情况

    在这一行中,进入的第一步将进入内部对象上的toString()方法(可能没有可用的源代码),进入的第二步将进入您自己的方法(将有代码)


    解决这个问题的方法(如果它发生在常规Java运行时类中)是为您的项目使用一个而不是一个JRE,并遵循良好的编码实践,将内部语句移动到一个变量中,以便每行只做一件事(优化器应确保这样做不会导致性能损失).

    如果您有这样的线路:

    func1(obj.func2());
    
    调试器进入obj.func2()的第一步 如果它是第三方源代码或java src,并且您使用jre,您可能会错过此源代码,eclipse将无法附加源代码进行调试(使用maven!=)


    在下一步“进入”中,您将进入func1

    我不记得为什么会发生这种情况,但我可以向您保证这是很常见的:)我认为构建路径有一些问题
    func1(obj.func2());