繁体   English   中英

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

[英]IntelliJ Code Completion not working for new Java classes

IntelliJ IDEA 13 开始在我的本地设置中表现出非常奇怪的行为。

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

例如,声明后

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

打字f. 不会显示File类中所有方法的列表,以从中选择一个。 事实上,在输入点 (.) 时,不会出现任何建议,并且在 IDE 窗口的左下方(在状态栏中)会显示消息“需要标识符。需要标识符”。 被陈列。 有时,会提出一长串来自不相关组件或库的完全不相关的方法。

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

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

有任何想法吗?

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

确保您在运行 IntelliJ 时未处于省电模式(文件 [菜单] -> 省电模式是否选中)。 如果启用了省电模式,IntelliJ 将不会运行后台任务,包括代码完成

对于追随者,帮助我的一件事(自动完成仅显示强制转换字段 instanceof 等)是我打开了一个没有正确链接到其子模块的 Maven 模块(它有一个注释掉的子模块部分),所以 IntelliJ 只是显示maven java 文件基本上是“文本”文件,在项目窗格的图标中带有一个小“j”。 修复根 maven pom.xml 文件以将子目录包含为模块,瞧,它们再次被视为真正的 java 文件,哇!

我正在使用 IntelliJ Ultimate 2017.1,我遇到了类似的问题。 Maven 项目,试图使用 selenium API,但智能感知并没有为我弹出相关方法。

这是我解决问题的方法:

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

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

右键单击您的 src 目录并将目录标记为> Sources Root。

它帮助我将 src 目录标记为“源根目录”。 在此处输入图片说明

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

您的问题可能有两个原因

  1. 源文件夹未在您的构建 java 构建路径中正确配置。 如果源文件夹配置不正确,自动完成将无法获得所需的类定义,并且自动完成将无法为您的项目。
  2. 恢复“Windows > Preferences > Java > Editor > Content Assist > Advanced”中的默认选项

右键项目 -> 添加框架支持 -> 选择 Maven -> 点击 OK

唯一对我有用的是杀死 IntelliJ(在 Ubuntu 上)并重新启动它。

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

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

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

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

它发生在我没有添加到父项目 pom 中的模块中(他们是故意这样做的),这就是原因,我右键单击了有问题的模块的pom.xml ,然后单击了

在此处输入图片说明

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

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

从“设置”>“编辑器”>“常规”>“自动导入”>“Java”>“从导入和完成中排除”中删除您的包

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

更改您的 Intellij 设置以包含要完成的包

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

使固定:

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

我遇到了类似的问题,本主题中没有任何帮助。

所以最后我让它工作了,我清除了 IntelliJ 的缓存并重新启动。

File > Invalidate Caches / Restart.. > Invalidate Cache and Restart (按钮)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM