【问题标题】:Intellij Cannot resolve symbol on importIntellij 无法解析导入时的符号
【发布时间】:2015-01-13 03:33:26
【问题描述】:

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

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

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

请看屏幕截图:

有人知道吗?

【问题讨论】:

  • 您确定该库已添加到模块中吗?它可以作为项目库添加​​,但不在模块类路径中。
  • yes -- 在项目结构中,库作为依赖项添加 -- 实际上,我认为这是 Intellij 中的一个错误 -- 不同库/项目随机发生 -- 从头开始​​重新创建项目通常会修复它
  • 我尝试使缓存无效并重新启动,但唯一对我有用的是完全清除 .idea 目录,然后从头开始创建一个新项目。
  • 如果答案中提到的一切都是正确的。关闭项目并重新导入。这为我解决了这个问题。
  • 在我的情况下,问题是我没有为项目配置 SDK - 在我转到项目结构并设置适当的 SDK 后,它得到了解决。

标签: java intellij-idea import classpath


【解决方案1】:

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

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

【讨论】:

  • 清洁项目也有帮助
  • @GeRyCh 恕我直言,Eclipse 清理 = Intellij 无效缓存
  • 对我也不起作用。我的 JUnit 是一个“全球图书馆”。当我删除它并添加 IntelliJ 自己的 JUnit5 发行版时,它可以工作。当我再次将此依赖项转换为全局库时,错误返回。我怀疑这是一个错误,因为将其转换为项目库可以正常工作。
  • 这删除了我环境中的 .iml 文件。重新生成/重新导入它解决了这个问题。
  • 从几周以来,我每天至少遇到一次这个问题。真的让我很紧张,因为重新索引一切需要很长时间。
【解决方案2】:

老问题,'21 回复。我遇到了我的go build 可以成功构建代码但我的 Goland IDE 显示缺少模块或依赖项的问题。我尝试了使缓存无效并重新启动,但遇到了同样的问题。从另一个 S/O 线程,我尝试将 GO111MODULE=on 添加到我的路径变量中,但这也没有解决 IDE 问题。

对我有用的是在 Preferences > Go > GOROOT 中选择正确的 GOROOT 路径。

我安装了两个版本的 go,一个来自 brew,一个来自在线 Go 安装程序。我选择了 brew 安装路径,我的 IDE 能够正确解析依赖关系。

【讨论】:

    【解决方案3】:

    尝试通过以下方式从上游清理 maven:

      mvn -U clean install
    

    【讨论】:

      【解决方案4】:

      另外,请检查您的类是否在编译排除项中

      如果您看到左上角有一个小灰色十字,则必须从编译排除项中删除类

      如何删除

      【讨论】:

        【解决方案5】:

        我的问题是我的 Maven 插件在更新后被禁用。我去帮助 -> 查找操作... -> 输入 Maven 并发现它是“关闭”。我点击了切换开关,在加载了一段时间后它被重新启用了。

        【讨论】:

          【解决方案6】:

          File -> Invalidate Caches/Restart 和 构建你的项目

          【讨论】:

            【解决方案7】:

            对于 2020.1.4 终极版,我必须执行以下操作

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

            对我来说问题是图书馆没有被填充 mvn -U clean install 来自终端。

            【讨论】:

              【解决方案8】:

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

              检查您的模块源代码根目录。

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

              2. 模块

              3. 选择您的问题模块。

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

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

              【讨论】:

              • 我不知道这是否适用于某些人,但似乎如此,我想知道原因:实际上你的下一个 Gradle 同步将重新创建你刚刚删除的所有源目录。跨度>
              • 似乎当您有多个源(src)文件夹时会出现问题。这可能是由于路径重复造成的。在可能的情况下,我在源代码中有主源文件夹和子文件夹以及其他包。确保只有一个源文件夹,并且不应将所有子文件夹添加到源中。这将确保没有文件路径重复。谢谢@inetphantom。
              • 就我而言,我在不同的文件夹中有 Groovy 源代码。我必须将它们显式添加为源,以删除导入时出现的“找不到符号”错误。
              【解决方案9】:

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

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

              【讨论】:

                【解决方案10】:

                我上面尝试的任何方法都没有为我工作(不是我尝试了所有建议)。最后的诀窍是重命名类——我只是在类名和文件名中添加了 2。然后我手动解决了所有引用。 (由于它们未被识别,重构并没有自动更改引用。)

                一旦“2-version”在所有地方都被愉快地解决了,我就能够重构并从类和文件中删除 2,然后一切都应该是这样的。

                【讨论】:

                  【解决方案11】:

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

                  mvn idea:idea
                  

                  完成。 多次遇到这个问题。尝试了“使缓存无效并重新启动”和所有其他解决方案。运行该命令对我来说非常完美。 我目前正在使用 IntelliJ 2019.2,但这也发生在以前的版本中,并且解决方案也有效。

                  【讨论】:

                  【解决方案12】:

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

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

                  【讨论】:

                    【解决方案13】:

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

                    mvn dependency:purge-local-repository
                    

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

                    【讨论】:

                      【解决方案14】:

                      file-> Project Structure -> Modules,找到有问题的模块,点击它,选择右侧的Dependencies标签。单击绿色加号,尝试添加导致问题的 jar 或库。这对我有用。

                      【讨论】:

                        【解决方案15】:

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

                        【讨论】:

                          【解决方案16】:

                          遇到同样的问题,直到我注意到 src 文件夹被标记为根源 而不是 java! 更改为仅 java (src/main/java) 作为源根解决了我的问题

                          【讨论】:

                            【解决方案17】:

                            File -> Invalidate Caches/Restart 或重建项目没有对我有用。

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

                            【讨论】:

                            • 这个答案也为我的 Maven 项目完成了工作。对于 IntelliJ 2018.3.4,图标保持不变(蓝色转向箭头),但该选项的确切标题称为“重新导入所有 Maven 项目”。对作者来说非常重要,经过一小时的研究,为您的问题找到正确的解决方案真是令人欣慰
                            【解决方案18】:

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

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

                            【讨论】:

                            • 右键->Maven后没有“重新导入”。有重新加载。
                            【解决方案19】:

                            我最近在尝试使用 Intellij 处理 NiFi 时遇到了这个问题,结果发现问题是 NiFi 需要 Maven >= 3.1.0,而我检查的版本(我猜我的默认版本)是 3.0。 5.更新项目的 Maven 版本修复了它,所以在某些情况下,Maven 版本错位可能是一件值得关注的事情......我猜这很不寻常,但如果你在线程上走得这么远,你可能会遇到不寻常的问题:)

                            【讨论】:

                              【解决方案20】:

                              我从@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路径

                              • 让我们清除缓存

                              【讨论】:

                                【解决方案21】:

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

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

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

                                修复:

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

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

                                【讨论】:

                                  【解决方案22】:

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

                                  我手动创建了根目录,但没有注意到 src/main/test 文件夹被标记为 Sources 而不是 Tests。这就是为什么假设我的测试类的所有测试库(JUnit、Mockito 等)都在 Compile 范围内,而不是在 Test 范围内。

                                  我将src/main/test 标记为测试并重建模块后,所有错误都消失了。

                                  【讨论】:

                                    【解决方案23】:

                                    对我来说是编辑 .idea 文件夹中的包文件,因为我不小心将源添加到此 jar 库中,而 android 无法通过删除 b/m 图片@987654321 中标记的源行来解决它@。

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

                                    【讨论】:

                                      【解决方案24】:

                                      我找到了根源!

                                      在我的例子中,我添加了一个包含一些 java 源文件的 jar 文件,但我认为 java 源代码不好,在 Intellij Idea 依赖库中它会自动添加源代码,所以在编辑器中导入是错误的,只需删除源代码“项目结构”->“库”中的代码,它对我有用。

                                      【讨论】:

                                        【解决方案25】:

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

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

                                        更新:1小时有效,恢复到损坏状态...

                                        【讨论】:

                                          【解决方案26】:

                                          简单重启对我有用。

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

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

                                          【讨论】:

                                            【解决方案27】:

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

                                            以下是我遇到这个愚蠢问题的步骤。

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

                                            解决方案:

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

                                            根本原因:

                                            Directory tree of source code

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

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

                                            当我们尝试导入它时。很明显,intellij怎么导入weired目录下名为a.b.c的文件。

                                            【讨论】:

                                            • 谢谢老兄,这是我的问题。编辑:详细说明...我从 1 个 maven 模块复制到另一个,并且副本展平了目录。虽然 Intellij 看起来一切都已排序,但我的文件夹实际上是“a.b.c”而不是 a>b>c。
                                            【解决方案28】:

                                            检查您的模块依赖关系。

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

                                            【讨论】:

                                              【解决方案29】:

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

                                              【讨论】:

                                                猜你喜欢
                                                • 2020-01-22
                                                • 2022-01-05
                                                • 2014-06-28
                                                • 1970-01-01
                                                • 1970-01-01
                                                • 2016-10-12
                                                • 2020-04-01
                                                • 1970-01-01
                                                相关资源
                                                最近更新 更多