Eclipse自动完成在某些Java文件中无法工作

31
我注意到Eclipse中某些Java文件的自动完成功能无法正常工作。 同时,自动完成无法工作的文件显示为空心的“J”图标。而自动完成正常的文件,则显示为实心的“J”图标。
我想知道具体出了什么问题,为什么会出现不同的图标以及为空心“J”图标的文件为什么会关闭自动完成和语法高亮?
谢谢。
更新:
基本上,我正在按照VonC所建议的做,但Eclipse没有刷新,所以我认为VonC的建议没有起作用,经过刷新后,问题得到解决。
9个回答

103

由于这个问题在谷歌上排名很高,我会提供一个解决普遍自动完成问题的解决方案,而不是针对“空心J”的问题。

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

还可以进行以下操作:

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


17
记得在“首选项 -> Java -> 编辑器 -> 内容协助 -> 高级”中恢复默认设置。同时要注意不改变原意,使翻译更加通俗易懂。 - Tobber
1
兄弟,你是我的英雄。这正是我遇到的问题。我从未更改过此面板,但显然“Java”选项被取消了勾选。 - fool4jesus
由于某些原因,在内容辅助首选项窗格中恢复默认值并没有恢复Java自动完成。只需确保在Java > 内容辅助 > 高级中,"Java Proposals" 已被选中为默认的内容辅助列表即可。 - paulrehkugler
1
在当前的ADT捆绑包(2013年1月),这不起作用。您必须转到“窗口”->“首选项”->“Java”->“编辑器”->“内容辅助”->“高级”,并选中JAVA PROPOSAL选项。但是我点赞了,因为它给了我指引。@fool4jesus,你给了我指引。 - tony gil

18

一些答案(恢复默认值)在2013年1月之后对某些ADT捆绑安装程序无效。

在这种情况下,转到

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

并勾选JAVA PROPOSAL选项。


1
在Eclipse Juno中对我有用。 - koleanu

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

alt text

请前往项目属性的“Java Build Path”部分,“Source”选项卡,并查看是否设置了一些排除过滤器?例如,通常会定义:
**/Test*.java

当你拥有大量源代码并且不想在自动完成时显示测试类,或者不希望在源代码搜索期间考虑测试类时,可以首先排除构建任何单元测试类。


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

10
那些带有空心 J 的文件不在项目的构建路径中,因此它们无法参与正常的构建过程,因此自动完成功能将无法为这些文件(和其他 Java 编辑器功能)启用。您必须使用项目属性的“源路径”部分将包含 Java 文件的文件夹添加到构建路径中。您可以右键单击项目导航器/包资源管理器中的项目,然后转到“属性”以访问此选项。有关详细信息,请参见 http://www.informit.com/articles/article.aspx?p=367962
另外,如果这些文件一开始就不是 Java 项目的一部分,则必须创建一个项目并将文件移入其中,或将文件放在现有项目中。再次确保这些文件位于项目属性中所描述的源目录下。

alt text
(来源:teradata.com)


实际上,所有的源代码都在一个共同的目录下,即“src”目录。大多数文件都没问题,只有“src”目录下的几个文件夹包含带有空心“J”的Java文件,它们的语法高亮已经消失,自动完成也不起作用了。那么这是怎么可能的呢? - m_a_khan
你能否右键点击其中一个文件,进入属性,并将初始信息页面上看到的内容粘贴为评论? :) - Chris Dennett
此外,请确保“自动构建”在项目菜单上已启用,尽管我不确定这是否会有所不同。还要检查您的排除过滤器。 - Chris Dennett
软件包资源管理器的截图也可能有助于找到原因。 - Arne Deutsch

2

如果自动完成无法正常工作,我会通过删除文件来解决问题。在复制源代码之前,我会先删除该文件。然后,我会使用相同的名称重新创建Java文件,并将之前复制的源代码粘贴进去。


1
作为对 @VonC 回答的补充,确保 Java 文件是包含在 Inclusion 模式中的一部分。我曾经遇到过这样的情况:构建过程只包括 .js 文件而不包括 Java 文件,导致项目创建失败。

Shows Eclipse Include without Java files

你可以通过点击编辑按钮手动编辑包含文件。在我的情况下,修复了构建脚本以使其永久生效。

1

恢复默认设置或者修改构建路径(文件已经在包目录中,且其他文件的自动完成功能正常)都没有解决问题。对我来说,解决方法是显式地关闭文件(在选项卡中右键单击文件名),然后重新打开。有趣的是,仅仅重新启动Eclipse也不能解决问题。


0

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

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

我在创建Web应用程序工件时犯了一个错误。默认情况下,它不会为Java创建文件夹,而是为资源创建文件夹。我错误地将我的源代码放在那里。 看一下-看看区别。

enter image description here


0

我成功地在Visual Studio Code(VSCode)中解决了这个问题,方法是输入crtl-shift-p并键入clean。当我这样做时,我运行了“Java:清理Java语言服务器工作区”命令。这为我解决了自动完成的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接