IntelliJ代码完成不适用于新的Java类

时间:2014-05-04 23:55:21

标签: java intellij-idea code-completion

IntelliJ IDEA 13已开始在我的本地设置中展示一种非常奇怪的行为。

即,在添加到现有项目的任何新Java类中,Code Completion不起作用。因此,在新类中声明任何类型的对象变量,然后键入该变量的名称,然后输入点(。)之后,对相应对象的任何方法都没有建议。

例如,在声明

之后
File f = new File("/home");

键入f.不会显示File类中所有方法的列表,从中选择一个。事实上,当键入点(。)时,没有任何建议出现在IDE窗口的左下角(在状态栏中),消息"标识符是预期的。预期的标识符。"被展示。有时,会提出一系列完全不相关的方法,这些方法来自不相关的组件或库。

奇怪的是,如果上述声明发生在任何现有的类中,Code Completion按预期工作。

在机器重启,IDE重启,项目重新导入,关闭/重新打开或重建的许多组合之后,此行为仍然存在。

有什么想法吗?

16 个答案:

答案 0 :(得分:21)

确保在File - >中标记所有源目录。项目结构 - >模块。

答案 1 :(得分:20)

确保在运行IntelliJ时未处于省电模式(选中文件[菜单] - >省电模式)。如果启用了省电模式,IntelliJ将无法运行background tasks, including code completion

答案 2 :(得分:12)

对于粉丝来说,有一件事对我有帮助(自动完成只显示演员 领域 的instanceof 是因为我打开了一个maven模块,它没有正确链接到它的子节点(它有一个注释掉的子模块部分),所以IntelliJ只显示maven java文件基本上是“文本”文件,带有一个小的“j”在项目窗格中的图标中。修复根maven pom.xml文件以包含子目录作为模块和瞧,它们再次被视为真正的java文件,woot!

答案 3 :(得分:8)

我正在使用IntelliJ Ultimate 2017.1,我遇到了类似的问题。 Maven项目,试图使用selenium API,但intellisense没有为我提供相对的方法。

以下是我解决问题的方法:

  

右键单击项目src文件夹
  选择Mark Directory As   然后选择Sources Root

答案 4 :(得分:4)

这有助于我将src目录标记为“源根目录”。 enter image description here

答案 5 :(得分:2)

您的问题可能有两个原因

  1. 在构建java构建路径中未正确配置源文件夹。如果未正确配置源文件夹,则自动完成将不会获得所需的类定义,并且自动完成将失败,因为您的项目。
  2. 恢复' Windows>中的默认选项偏好> Java>编辑>内容辅助>先进'

答案 6 :(得分:2)

右键点击项目 - >添加框架支持 - >选择Maven - >单击“确定”

答案 7 :(得分:2)

对我来说唯一有用的就是杀掉IntelliJ(在Ubuntu上)并再次启动它。

答案 8 :(得分:2)

在根文件夹中剪切文件夹.idea和文件* .iml,然后将其他地方粘贴到项目之外。当你重新打开项目时,自动导入将再次神奇地工作。

答案 9 :(得分:2)

我遇到了同样的问题,这是因为我没有将文件夹标记为来源root。

右键单击您的src目录并将目录标记为>来源根源。

答案 10 :(得分:1)

我在为eclipse-che客户端扩展编码时遇到了这个问题。 Eclipse che模块都是maven类型。我的客户端扩展项目是一个独立的模块,可以独立于父项目进行编译。当我向Intellij导入相同的结构时,我的客户端扩展项目没有给出建议。在将客户端扩展项目包含到父模块(将其添加到pom.xml)后,建议开始显示。

答案 11 :(得分:1)

设置>编辑器>常规>自动导入> Java>从导入和完成中排除

中删除您的包

我遇到过这个问题。这篇文章的解决方案都没有奏效,但我能够修复它,因为我不小心将我的项目包放在“从导入和完成中排除”设置中。

change your intellij settings to include the package for completion

答案 12 :(得分:1)

我有一个groovy项目,其中某种方式jdk没有设置为依赖项,因此jdk类不会自动完成。

修复:

  1. 项目结构
  2. modules
  3. (您的模块)
  4. 选项卡依赖项。
  5. 在模块SDK字段中,添加jdk。

答案 13 :(得分:1)

这不是IntelliJ 13,而是2017.1.1社区版本。在这里添加这个答案,以便其他人从一个源于Gradle配置的原因中受益。

现在,在我的情况下,自动完成,生成覆盖方法和其他功能也无法正常工作。我想到的是,在我的项目设置中,我有多个gradle模块配置。当我清理剩下的模块并保留了该项目所需的唯一一个(除了测试之外)时,所有行为都恢复正常。

同样在Gradle项目的情况下,请记住在Source文件夹中标记所有sourceSet根文件夹。

编辑:如果您不想为每个sourceSet创建多个配置,并且要导入gradle模块,则在导入屏幕上还应禁用为每个sourceSet标志创建模块。没有这个,我在导入模块后必须删除多个模块。Create module per sourceSet

答案 14 :(得分:1)

我有类似的问题,这个主题没有任何帮助。

所以最后我做了它,我清除了IntelliJ的缓存并重启。

档案>无效缓存/重新启动..> Invalidate Cache and Restart(按钮)

enter image description here

答案 15 :(得分:0)

对我来说,这是在未添加到父项目pom中的模块中发生的(他们是故意这样做的),这就是原因,我右键单击了出现问题的模块的pom.xml,点击了

enter image description here

现在已经完成了自动完成功能,除此之外,我还可以在右上角的maven选项卡中将该模块视为一个单独的项目。