Eclipse 自动完成功能在某些 Java 文件中不起作用

Posted

技术标签:

【中文标题】Eclipse 自动完成功能在某些 Java 文件中不起作用【英文标题】:Eclipse autocomplete not working in some Java files 【发布时间】:2011-01-24 07:48:20 【问题描述】:

我注意到自动完成功能在 Eclipse 中的某些 java 文件中不起作用。 此外,自动完成功能不起作用的文件会显示一个空心“J”作为 Java 文件的图标。自动完成的文件,java文件的图标是一个填充的“J”

我想知道是否有人可以指出突然出了什么问题,为什么图标的变化以及为什么在带有空心“J”图标的文件中关闭了自动完成和语法突出显示?

谢谢。

更新

基本上,我正在按照 VonC 的建议进行操作,但 Eclipse 并没有刷新,这就是为什么我认为 VonC 的建议不起作用的原因,在进行刷新后,问题解决了。

【问题讨论】:

【参考方案1】:

我能够在 Visual Studio Code、VSCode 中修复此问题,但输入 crtl-shift-p 并输入 clean。当我这样做时,我运行了“Java:清洁 Java 语言服务器工作区”命令。这解决了我的自动完成问题。

【讨论】:

【参考方案2】:

带有空心 J 的那些不是项目构建路径的一部分,因此它们无法参与正常的构建过程,因此不会为这些文件启用自动完成功能(以及其他 Java 编辑器功能) !)。您必须使用项目属性的“源路径”部分将包含要构建的 Java 文件的文件夹添加到构建路径。这可以通过右键单击项目导航器/包资源管理器中的项目并转到属性来访问。详情请见http://www.informit.com/articles/article.aspx?p=367962。

此外,如果文件一开始就不是 Java 项目的一部分,则您必须创建一个项目并将文件移入,或将文件放入现有项目中。同样,请确保这些文件位于项目属性该部分所述的源目录下。

(来源:teradata.com)

【讨论】:

实际上所有源代码都在一个公共目录“src”下,大多数文件都很好,只有“src”下的几个文件夹包含带有空心“J”的java文件,它们的语法突出显示消失了,自动完成功能不起作用。那么这怎么可能呢? 您能否右键单击其中一个文件,转到属性,然后将您在初始信息页面上看到的内容粘贴为评论? :) 此外,请确保在项目菜单上启用了自动生成,尽管我不确定这会有所作为。还要检查您的排除过滤器。 包浏览器的屏幕截图也可能有助于找到原因。【参考方案3】:

恢复默认值或我的构建路径(文件已经在包目录中,其中包含自动完成工作的其他文件)都没有解决问题。对我来说修复是明确关闭文件(右键单击选项卡中的文件名)并重新打开。有趣的是,只是重新启动 Eclipse 也不起作用。

【讨论】:

【参考方案4】:

确保您拥有正确的目录结构。我相信:

Java 文件旁边的空心 J 图标 - 不会生成 Java 文件旁边的普通 J 图标 - 是要构建的文件。

我在创建 webapp artefact 时犯了一个错误。默认情况下,它不会为 Java 创建文件夹,而是为资源创建文件夹。我错误地将我的资源放在那里。 看看 - 看看有什么不同。

【讨论】:

【参考方案5】:

由于这个问题在 Google 上的排名很高,我将添加一个解决方案来解决一般自动完成问题,而不是针对“空心 J”问题。

尝试 Window (Windows/Linux) 或 Eclipse (OS X) -> 首选项 -> Java -> 编辑器 -> 内容辅助 -> 恢复默认值

还有

内容辅助 -> 高级 -> 恢复默认值

【讨论】:

记得在 Content Assist -> Advanced 中恢复默认设置。 (首选项 -> java -> 编辑器 -> 内容辅助 -> 高级 老兄,你是我的英雄。这正是我遇到的问题。我从未对此面板进行过更改,但显然“Java”选项以某种方式未被选中。 由于某种原因,在 Content Assist 首选项窗格中恢复默认值不会恢复 Java 自动完成功能。只需确保选中 Java > Content Assist > Advanced 中的默认内容辅助列表中的“Java 提案”即可。 在当前的 ADT 包(13 年 1 月)中,这不起作用。您必须转到 Window -> Preferences -> Java -> Editor -> Content Assist -> Advanced 并勾选 JAVA PROPOSAL 选项。但我投了赞成票,因为它为我指明了方向。 @fool4jesus 你给我指路了。【参考方案6】:

作为@VonC 答案的附录,请确保 Java 文件是包含模式的一部分。我有一个案例,其中构建过程正在创建项目,而只包含 .js 文件而不是 Java 文件:

您可以通过“编辑”按钮手动编辑包含内容。就我而言,对构建脚本进行了修复以使其永久化。

【讨论】:

【参考方案7】:

在下图中,MyClass.java 有一个空心的J,因为它被明确排除在要构建的源之外:

你能去项目的属性,“Java Build Path”部分,“Source”选项卡,看看是否设置了一些排除过滤器? 例如通常定义:

**/Test*.java

首先排除构建任何单元测试类(当您有大量源并且不希望在自动完成期间显示测试类,或者不希望在源搜索期间考虑它们)。

【讨论】:

由于某种原因,Java 构建路径完全为空,这导致了问题。我包含了丢失的 JAR 文件,但现在我需要将所有包都包含回项目中。唯一的问题是我收到错误消息“声明的包与预期的包不同” @m_a_khan:确保选择正确的 src 目录,否则,您的包将与目录不匹配。见coderanch.com/t/453731/IDEs-Version-Control-other-tools/…或forums.sun.com/thread.jspa?threadID=5376951或eclipsezone.com/eclipse/forums/t73687.html【参考方案8】:

上面的某些答案(恢复默认值)不适用于自 13 年 1 月以来安装的某些 adt 捆绑包。

在这些情况下,请转到

窗口 -> 首选项 -> Java -> 编辑器 -> 内容辅助 -> 高级

并勾选 JAVA PROPOSAL 选项。

【讨论】:

在 eclipse Juno 中为我工作【参考方案9】:

如果自动完成功能不起作用,我会通过删除文件来解决此问题。就在复制源代码之前。然后我重新创建了同名的java文件。粘贴之前复制的源代码。

【讨论】:

以上是关于Eclipse 自动完成功能在某些 Java 文件中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Eclipse IDE for Java 中启用自动完成(智能感知)[重复]

Eclipse 插件

Eclipse Juno CDT 中的选项卡完成和自动内容辅助

调试java程序时如何在eclipse中执行某些功能?

有啥方法可以在 Eclipse 中获得类似 IntelliJ 的自动完成功能?

Eclipse中的C代码自动完成