Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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源代码。“跨入”以某种方式表现得像“跨过”_Java_Eclipse_Debugging - Fatal编程技术网

无法单步执行java源代码。“跨入”以某种方式表现得像“跨过”

无法单步执行java源代码。“跨入”以某种方式表现得像“跨过”,java,eclipse,debugging,Java,Eclipse,Debugging,我试图研究java字符串类中的方法是如何工作的,所以我创建了一些自定义代码来调用该字符串类方法 如您所见,我在自己的代码中设置了一个断点,在java字符串类源代码中设置了另一个断点 当我处于调试模式并且在代码的第7行时,我按下了步骤 然而,eclipse并没有进入字符串类方法indexOf,而是进入了代码的第8行 为什么会这样?如何进入java字符串方法源代码 编辑1: 我已经检查过了,在问这个问题之前,是否激活了use step filter(使用步进过滤器),但它没有激活。所以我不认为使用阶

我试图研究java字符串类中的方法是如何工作的,所以我创建了一些自定义代码来调用该字符串类方法

如您所见,我在自己的代码中设置了一个断点,在java字符串类源代码中设置了另一个断点

当我处于调试模式并且在代码的第7行时,我按下了步骤

然而,eclipse并没有进入字符串类方法indexOf,而是进入了代码的第8行

为什么会这样?如何进入java字符串方法源代码

编辑1:

我已经检查过了,在问这个问题之前,是否激活了use step filter(使用步进过滤器),但它没有激活。所以我不认为使用阶跃滤波器是这里的问题

编辑2:


单步执行与我自己定义的方法配合得很好

很可能有一个单步过滤器,它指示调试器跳过某些类

在“首选项”对话框菜单窗口->首选项中,检查步骤筛选设置

停用使用停用所有步骤过滤器的步骤过滤器,或仅停用java.*类的过滤器

编辑另一个原因可能是您的项目正在使用JRE而不是JDK来执行。下面是一个使用Java8JRE和Java8JDK的示例

使用JRE的项目构建路径请注意jre1.8.0112

使用JDK的项目构建路径注意JavaSE-1.8

编辑2以确定使用的Java运行时库在代码中添加以下语句并在调试模式下运行

...
public static void main(String[] args) {
    Stream.of(System.getProperty("sun.boot.class.path")
            .split(File.pathSeparator))
            .filter(s -> s.endsWith("rt.jar"))
            .forEach(System.out::println);
    ...

你有消息来源吗?如果供应商没有提供源代码,您将如何进入源代码?附件图片右侧的@cup是java string class的源代码。java.lang.string class实现此方法,eclipse显示其源代码。我试着在eclipse中加入,结果成功了fine@JaySmith是啊,看来不是我很倒霉就是我很笨。我在stackoverflow中搜索过,这个问题似乎并不经常出现。按Run tab并选择Step into option,然后再询问。因此,我已经检查了use Step filter是否已激活,并且没有激活,因此我认为use Step filter不是问题所在。不过,还是要谢谢你的帮助@我添加了另一个可能的原因。嗨,次优,我已经检查了我的EclipseIDE设置,项目的构建路径中有JDK,而不是JRE,所以我认为这不是问题所在。真的很感谢你的帮助,真是感激不尽@CaptainAmerica您可以添加代码以获取使用过的运行库吗。也许这会给它带来一些启示。@CaptainAmerica不客气。我试着回报一些东西,为了我从中得到的东西-
...
public static void main(String[] args) {
    Stream.of(System.getProperty("sun.boot.class.path")
            .split(File.pathSeparator))
            .filter(s -> s.endsWith("rt.jar"))
            .forEach(System.out::println);
    ...