Eclipse 内容辅助在升级到 2021-06 (4.20.0) 后循环失败

问题描述

有人问了一个类似的问题 here,但还没有答案,代码示例更少。我找到并尝试了 similar problem删除解决方案,但无济于事。

最近将 Eclipse 升级到版本 2021-06 (4.20.0) 后,我注意到内容辅助功能 (ctrl-space) 在许多情况下无法正常工作。

import java.util.HashSet;
import java.util.Set;

public class ContentAssist {

    public static void main(final String[] args) {
        final Set<String> storedSet = new HashSet<String>();
        for (int i = 0; i < 500; i++) {

            System.out.println(i);
        }
    }
}

如果我们现在想要访问 storedSet,首先输入“s”,我们会看到 out 显示为编译错误

compilation error

内容辅助不足:

Content Assist fail 1

当提供更多字符时:

Content Assist fail 2

注释掉 System.out 部分,Content Assist 再次起作用:

Content Assist works

在 PC 中或在 PC 前有问题吗?

编辑:我刚刚使用 Eclipse Installer 2021-06 R 在 Windows x86_64 上测试了 Eclipse 2021-06 (4.20.0) Build id 20210612-2011 的全新安装。使用上面的代码创建了一个新的 Java 项目,然后发生了同样的行为。

解决方法

不幸的是,这确实是 Eclipse 2021-06 (4.20) 的一个问题,该问题已针对即将于 9 月发布的 Eclipse 2021-09 (4.21) 版本修复 2021 年 15 月 15 日:

Eclipse bug 574338 - [content assist] [regression] no content assist for variables in conditional blocks

作为解决方法,您可以在使用内容辅助的位置之后添加 ;,或者等到下一个版本或至少下一个版本的第一个里程碑版本(将于 2021 年 7 月 16 日发布)。