Intellij无法在导入时解析符号

问题描述 投票:90回答:23

对于不同的库和不同的项目,此问题会间歇性地发生。尝试导入库时,将识别包,但无法解析类名。

如果在import语句中,我right-click -> Goto -> the package's declaration,我看到所有反编译的类显示在侧窗格中 - 包括我需要的那些 - 如果我尝试自动完成import语句,我注意到我需要的类没有在下拉列表。

我已经尝试使缓存无效,不起作用。我找不到任何类冲突 - 我的类路径中没有其他jar文件具有相同的包名称。我可以将此类导入其他项目。

请看屏幕截图:

有人有线索吗?

java intellij-idea import classpath
23个回答
180
投票

您可以尝试使缓存无效并重新启动intellij,在许多情况下它会有所帮助。

文件 - >使高速缓存/重新启动无效


1
投票

我尝试使缓存失效并重新启动,但唯一对我有用的是彻底清除.idea目录,然后从头开始创建一个新项目。


1
投票

当我尝试构建一个新的java项目时,我也多次遇到此错误。

以下是我如何解决这个愚蠢问题的步骤。

  1. 创建一个空项目,并创建新目录src/main/java
  2. 创建源包net.gongmingqm10.sketch
  3. 使用gradle wrappergradle idea为项目构建gradle东西。
  4. 在qazxsw poi文件中添加一些依赖项,然后在qazxsw poi中重新导入项目。
  5. 在现有的包build.gradle中创建gradle buildUser.java
  6. 我尝试在User.java中使用import School时出错。
  7. Intellij一直抱怨无法在导入时解析符号。

解:

首先构建项目,并将main / java标记为源根。创建一个名为School.java的新目录。将旧麻烦包中的所有文件移动到新包中。

根本原因:

net.gongmingqm10.sketch

正如你从树上看到的那样。我有一个名为net.gongmingqm10.sketch的目录。但我们真正需要的是3级目录:net-> gongmingqm10-> sketch

但在我在Intellij中完成项目构建之前,我创建了一个名为Directory tree of source code的新目录,它将为我提供一个名为net.gongmingqm10.sketch的真实目录。

当我们尝试导入它时。显然,intellij如何在名为net.gongmingqm19.sketch的weired目录下导入文件。


1
投票

@Anton Dozortsev我被类似的行为所驱使;我最终重新安装了IDE很多次,只是在删除IDEA应用程序,所有缓存,首选项等之后才解决问题。

我在过渡期间尝试了各种各样的步骤(比如重启,失效,删除net.gongmingqm10.sketcha.b.c文件等等。)

事实证明,问题是由于IntelliJ的.idea设置。我将它设置为100KB,这比我的依赖项大小要小,导致IntelliJ将其显示为未知,就像在屏幕截图中一样。

固定:

  1. 单击“帮助” - >“编辑自定义属性”
  2. 将属性设置为更大的值;默认值为2500KB *.iml

1
投票

有同样的问题,直到我注意到src文件夹被标记为根源而不是java!改为只有java(src / main / java)作为源根解决了我的问题idea.max.intellisense.filesize


1
投票

在项目控制台中运行此命令:

idea.max.intellisense.filesize=2500

完成。多久就有这个问题。尝试'无效缓存和重启'以及所有其他解决方案。运行该命令对我来说非常完美。我目前正在使用IntelliJ 2019.2,但这也发生在以前的版本和解决方案中。


0
投票

简单重启对我有用。

我建议先尝试重启,然后你可以选择使缓存无效。

PS:清理系统缓存将导致清除本地历史记录。


0
投票

我的导入Maven项目遇到了类似的问题。在一个模块中,它无法在导入时解析其他模块的一部分(是的,可以解析该模块的一部分)。

我将“Maven主目录”更改为更新的版本解决了我的问题。

更新:好一小时,回到破碎状态......


0
投票

我找到了原因!

在我的情况下,我添加一个jar文件包含一些java源文件,但我认为java源码不好,在Intellij Idea依赖库中它自动添加源码,所以在编辑器中导入是BAD,只需删除源代码“项目结构“ - >”图书馆“,它适合我。


0
投票

它对我来说是编辑.idea文件夹中的包文件,因为我意外地将源添加到此jar库并且android无法通过删除b / m图片enter image description here中标记的源行来解析它。

然后重建gradle和bam问题解决了。


0
投票

我有同样的问题,原因是项目来源的标记不正确。

我手动创建了根内容,并没有注意到mvn idea:idea 文件夹被标记为library error而不是src/main/test。所以这就是为什么我的测试类被假定为具有Compile范围的所有测试库(SourcesTests等),而不是Test。

一旦我将JUnit标记为测试并重建模块,所有错误都消失了。


35
投票

这可能有多种原因。在我的情况下,这是错误的源根问题。无效缓存无法与其他解决方案一起使用。

检查模块源根。

  1. 项目结构(Ctrl + Alt + Shift + S)。
  2. 模块
  3. 选择您的问题模块。
  4. 更改窗口“源”顶部的选项卡。
  5. 删除不需要的源根。保留一个并在此根目录中添加src和测试源根。

0
投票

我最近尝试使用Intellij来处理NiFi,结果发现问题是NiFi需要Maven> = 3.1.0而我检查的版本(我猜我的默认值)是3.0.5。为项目更新Maven版本修复了它,所以在某些情况下,Maven版本的错误对齐可能是一个看起来的东西...我猜这是相当不寻常的,但如果你在线程上得到这么远,你可能有一个异常问题:)


0
投票

同样的问题。如果这些方法不起作用。您可以尝试从本地maven存储库中删除lib,然后重新导入到pom。

Mockito

最后它对我来说很好。

src/main/test


0
投票

mvn repository-> project - > file,找到有问题的模块,单击它并选择右侧的Project Structure选项卡。单击绿色加号,尝试添加导致问题的jar或库。这对我行得通。


0
投票

经过长时间的搜索,我发现在maven项目中我的机器上的某个依赖项已经被破坏了。奇怪的是依赖仍然在编译的java代码中正常工作。然而,当我清理并重建我的maven依赖缓存时,问题就消失了,IntelliJ识别了包。你可以通过运行:

Modules

有趣的是,我问题的根源不是IntelliJ,而是maven本身。


0
投票

请尝试File-> Synchronize。然后在无效之前关闭并重新打开IntelliJ。

一旦我重新开始。我会失效,但同步在重新启动后清除了所有内容。


-1
投票

缺少Dependencies?试试mvn dependency:purge-local-repository


11
投票

检查模块依赖性。

  1. 项目结构(Ctrl + Alt + Shift + S)。
  2. 模块
  3. 选择您的问题模块。
  4. 更改窗口“依赖关系”顶部的选项卡。
  5. 检查需要的库(可能需要在选项卡'库中添加指定的库)或模块已在此处列出并且它具有正确的范围(主要是'complile')。

10
投票

我遇到了类似的问题,迈克的评论帮助我朝着解决它的方向前进。 虽然所需的库也是我项目中模块的一部分,但它需要更改范围。在模块依赖项中,我将范围更改为“编译”而不是“测试”,现在它对我来说很好。


9
投票

IntelliJ在解决依赖关系方面存在问题。请尝试以下方法:

  1. 右键单击pom.xml - > Maven - > Reimport
  2. 再次右键单击pom.xml - > Maven - >生成源和更新文件夹

7
投票

文件 - >无效缓存/重新启动或重建项目不起作用。

我的Gradle项目的作用是从IntelliJ v2017右上角的Gradle选项卡中“刷新所有Gradle项目”,使用下面显示的黄色标记按钮:

enter image description here


4
投票

文件 - >使缓存无效/重新启动并构建项目


3
投票

我从@jossef-harush@matt-leidholm找到了以下答案有用的from another link

  • 在IntelliJ编辑器中,单击红色关键字(例如Integer)并按ALT + ENTER(或单击灯泡图标)
  • 从意图菜单中选择Setup JDK

  • 点击Configure

  • 在我的情况下,JDK路径不正确(指向/opt/jdk1.7.0_51而不是/opt/jdk1.7.0_65

  • 点击...并浏览到正确的JDK路径

  • 让我们清除缓存


3
投票

右键单击pom.xml文件,转到Maven,单击Reimport。我有类似的问题,这对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.