Intellij无法解析导入时的符号


126

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

如果在导入语句I上right-click -> Goto -> the package's declaration,我看到侧窗格中显示了所有反编译的类-包括我需要的类-如果我尝试自动完成导入语句,我注意到我所需的类未包含在落下。

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

请查看屏幕截图:

在此处输入图片说明

在此处输入图片说明

有人知道吗?


1
您确定该库已添加到模块中吗?可以将其添加为项目库,但不能添加到模块的类路径中。
mkobit 2014年

是的-在Project Structure中,该库被添加为依赖项-实际上,我认为这是Intellij中的错误-在不同的库/项目中随机发生-从头开始重建项目通常可以解决该问题
Asaf Ebgi

如果答案中提到的所有内容都正确。关闭项目,然后再次重新导入。这为我解决了这个问题。
哈里·克里希南

Answers:


249

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

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


清洁项目也有所帮助
GeRyCh 2015年

2
@GeRyCh恕我直言,Eclipse清理= Intellij使缓存无效
Gangnus '16

也没有为我工作。我的JUnit是一个“全球图书馆”。当我删除它并添加IntelliJ自己的JUnit5发行版时,它可以工作。然后,当我再次将此依赖关系转换为全局库时,错误返回。我怀疑这是一个错误,因为将其转换为项目库效果很好。
Mark Jeronimus

1
谢谢你,这对我有用。我刚刚开始使用Intellij,已经对此感到非常恼火。一个不能走出括号的人,需要重新启动该程序以便正确编译,这确实是Java IDE的Windows。
Azureai '17

3
从几个星期开始,我每天至少有一次这个问题。真的让我感到压力,因为重新索引所有内容都需要花费很长时间。
spyro

38

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

检查模块源根。

  1. 项目结构(Ctrl+ Alt+ Shift+ S)。

  2. 模组

  3. 选择您的问题模块。

  4. 更改窗口“源”顶部的选项卡。

  5. 删除不需要的源根。保留一个并在此根中添加src并测试源根。


1
我不知道这是否对某些人有用,但似乎如此,我想知道为什么:实际上,您的下一个Gradle同步将重新创建您刚刚删除的所有源目录。
Fran Marzoa

16

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

  1. 右键单击pom.xml-> Maven->重新导入
  2. 再次右键单击pom.xml-> Maven->生成源并更新文件夹

12

检查您的模块依赖性。

  1. 项目结构(Ctrl+ Alt+ Shift+ S)。
  2. 模组
  3. 选择您的问题模块。
  4. 更改窗口“ Dependencies”顶部的选项卡。
  5. 检查所需的库(也许您需要在“库”选项卡中添加指定的库)或此处列出的模块且其范围正确(主要是“ complile”)。

12

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

mvn idea:idea

做完了 曾多次发生此问题。尝试了“使缓存无效并重新启动”和所有其他解决方案。运行该命令对我来说很完美。我当前正在使用IntelliJ 2019.2,但这在以前的版本中也发生过,并且解决方案也能正常工作。


顺便说一句,这个Maven插件已不再维护
纳布斯特

11

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


编译而不是测试对我有效。你知道为什么吗?
16th

1
你怎么做到这一点?谁是麦克?
cellepo

8

文件->使缓存无效/重新启动或重建项目无法正常工作。

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

在此处输入图片说明


这个答案也对我的Maven项目起到了作用。对于IntelliJ 2018.3.4,该图标保持不变(蓝色转向箭头),但该选项的确切标题称为``重新导入所有Maven项目''。由作者决定,这真是
令人难以置信,

4

我发现@ jossef-harush@ matt-leidholm的以下答案在另一个链接中很有用

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

IntelliJ意图菜单

  • 点击 Configure

Project SDK选择对话框

  • 就我而言,JDK路径不正确(指向/opt/jdk1.7.0_51而不是/opt/jdk1.7.0_65

配置SDK对话框损坏

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

修复了“配置SDK”对话框

  • 让我们清除缓存

IntelliJ文件菜单



3

右键单击pom.xml文件,转到Maven,然后单击“重新导入”。我有类似的问题,这对我有用。


1

我尝试使高速缓存无效并重新启动,但对我而言唯一有效的方法是彻底清除.idea目录,然后从头开始创建新项目。


这不是真正的解决方案。我曾经尝试过,但它不会影响我的情况。

1

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

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

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

解:

首先构建项目,并将main / java标记为源根。用相同的名称创建一个新目录net.gongmingqm10.sketch。将所有文件从旧的故障排除程序包移到新的程序包。

根本原因:

源代码目录树

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

但是在完成在Intellij中的项目构建之前,我创建了名为 net.gongmingqm19.sketch,它将为我提供一个的真实目录net.gongmingqm10.sketch

当我们尝试导入它时。显然,intellij如何导入名称为的怪异目录下的文件a.b.c


谢谢老兄,这是我的问题。编辑:详细...我从1个maven模块复制到另一个,并且副本展平了目录。尽管Intellij看起来一切都已排序,但我的文件夹实际上是“ abc”,而不是a> b> c。
Qbert

1

@Anton Dozortsev我因类似的行为而发疯;我最终多次重新安装了IDE,直到删除IDEA应用程序,所有缓存,首选项等之后,问题才得以解决。

在此期间,我尝试了各种步骤(例如重新启动,失效,删除.idea*.iml文件及其他)。

原来,问题出在IntelliJ的idea.max.intellisense.filesize设置上。我已将其设置为100KB,小于依赖项的大小,导致IntelliJ将其显示为未知,就像您的屏幕快照一样。

固定:

  1. 单击帮助->编辑自定义属性

  2. 将属性设置为更大的值;默认值为2500KB idea.max.intellisense.filesize=2500


1

遇到同样的问题,直到我注意到src文件夹被标记为根源而不是java!更改为仅将Java(src / main / java)作为源根解决了我的问题 在此处输入图片说明


1

请尝试“文件”->“同步”。然后在您无效之前关闭并重新打开IntelliJ。

一旦我重启。我本来是无效的,但是重新启动后同步清除了所有内容。


0

简单重启对我有用。

我建议先尝试重新启动,然后再选择使缓存无效。

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


0

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

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

更新:持续1小时,恢复为损坏状态...


0

我找到了原因!

就我而言,我添加了一个包含一些Java源文件的jar文件,但我认为Java源代码是不好的,在Intellij Idea依赖库中,它会自动添加源代码,因此在编辑器中的导入是BAD,只需删除“项目结构”->“图书馆”,对我有用。


0

对我来说,这是编辑.idea文件夹中的软件包文件的原因,因为我不小心将源代码添加到此jar库中,而android无法通过删除b / m图片库错误中标记的sources行来解决该问题。

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


0

我遇到了同样的问题,其原因是该项目来源的标记不正确。

我手动创建了根目录内容,却没有注意到该src/main/test文件夹被标记为Sources而不是Tests。所以这就是为什么我的测试类被认为具有所有的测试库(JUnitMockito,等)编译的范围,而不是测试。

标记src/main/test为“测试”并重新构建模块后,所有错误均消失了。


0

我最近在尝试使用Intellij在NiFi上工作时遇到了这个问题,原来的问题是NiFi需要Maven> = 3.1.0,而我使用的版本(我想我的默认值)是3.0.5。更新该项目的Maven版本以修复它,因此在某些情况下,Maven版本未对齐可能是一件值得一看的事情……我想这很不正常,但是如果您在线程上走得这么远,则可能是因为不寻常的问题:)


0

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

mvn存储库

终于对我很好。

项目


0

file-> Project Structure-> Modules,找到有问题的模块,单击它,然后选择Dependencies右侧的选项卡。单击绿色加号,尝试添加引起问题的jar或库。这对我行得通。


0

经过长时间的搜索,我发现某个Maven项目中的计算机上的某种依赖关系被破坏。奇怪的是,依赖项在已编译的Java代码中仍然可以正常工作。但是,当我清理并重建我的Maven依赖项缓存时,问题消失了,IntelliJ识别了该程序包。您可以通过运行以下命令来执行此操作:

mvn dependency:purge-local-repository

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


0

我上面没有尝试过的任何方法都没有为我工作(不是我尝试了所有建议)。最终的窍门是重命名类-我只是在类名和文件名中添加了2。然后,我手动解析了所有引用。(由于无法识别它们,因此重构不会自动更改引用。)

一旦到处都快乐地解决了“ 2-version”问题,我便可以重构该类并将其从类和文件中删除,然后一切都应按原样进行。


0

在我的情况下,解决方案是将项目添加为maven项目,除了我将其导入为maven项目之外:P

转到pom.xml->右键单击->添加为Maven项目



0

对于2020.1.4 Ultimate Edition,我必须执行以下操作

View -> Maven -> Generate Sources and Update Folders For all Projects

对我来说,问题是mvn -U clean install终端没有填充这些库 。

在此处输入图片说明


-1

失踪了io吗?尝试import org.openide.util.io.ImageUtilities

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.