平台:IntelliJ社区版10.0.3 SDK: jdk1.6.0_21 操作系统:Windows 7

所以我有一个奇怪的IntelliJ情况,让我完全难住了。我设置了一个Maven项目,并将log4j作为依赖项添加到pom.xml文件中。IDEA检查运行良好,我的单元测试全部编译并运行。

然后,我使用mvn install:install-file将hunnysoft的jmime库添加到我的本地maven存储库,如下所示。

mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar

Maven将jar文件安装到我的本地存储库中。

然后进入IntelliJ的Settings => Maven => Repository Services并更新我的本地存储库(以便IntelliJ将重新索引存储库内容)。

最后,我将以下依赖项添加到pom.xml文件中(就在log4j依赖项的上面)。

<dependency>
    <groupId>jmime</groupId>
    <artifactId>jmime</artifactId>
    <version>3.1.1e</version>
</dependency>

我现在创建一个新类,如下所示:

package com.stackoverflow.question;

import org.apache.log4j.Logger;
import com.hunnysoft.jmime.ByteString;
import com.hunnysoft.jmime.Field;
import com.hunnysoft.jmime.FieldBody;

public class StackOverflowQuestion {
    public Field create(String name, String text) {
        Logger.getLogger(getClass()).debug("create entered");
        FieldBody body = new FieldBody();
        body.setText(new ByteString(text));
        Field field = new Field();
        field.setFieldName(name);
        field.setFieldBody(body);
        return field;
    }
}

现在说说奇怪的地方。IntelliJ的意图机制可以很好地拾取和识别maven pom文件中的Logger导入。然而,对于所有hunnysoft导入它报告:“不能解析符号'ByteString/Field/FieldBody'”,BUT Build => Compile 'StackOverflowQuestion.java'正确编译一切,我为这个类创建的单元测试运行良好(尽管意图标记调用create()作为一个问题区域太)。

IntelliJ忽略了意图子系统的jmime.jar文件。我很困惑,因为log4j依赖项工作得很好,所有东西都编译和运行得很好。F12(“Go To Declaration”)在Logger导入上有效,但在所有jmime导入上失效。

哦,还有一件事,如果我转到“项目”窗口的“包”视图,“com.hunnysoft”。出现了“jmime”包,我可以在“Libraries”下面看到我在上面的代码片段中导入的所有类。从pom.xml文件中删除上述依赖项将导致该包消失,编译中断。

似乎检查的类路径被破坏了,但在Settings => Intentions | Compiler区域中似乎没有对此进行设置(并不是说我期望有这样的设置,我相信IDEA应该已经知道基于pom文件和JDK的正确类路径)。

作为最后的实验,我创建了一个全新的标准J2SE应用程序项目(没有使用maven),并将jmime.jar文件直接添加到项目中作为其库之一。在这个新项目中,我遇到了与上面描述的完全相同的问题。

这是舱单。MF来自jmime jar文件。

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.5.4
Created-By: 10.0-b23 (Sun Microsystems Inc.)

Name: com/hunnysoft/jmime/
Sealed: true
Specification-Title: Hunny JMIME
Specification-Version: 3.1.1
Specification-Vendor: Hunny Software, Inc.
Implementation-Title: com.hunnysoft.jmime
Implementation-Version: 3.1.1E
Implementation-Vendor: Hunny Software, Inc.

我在这个罐子文件里没发现什么异常。

我最好的猜测是,这个问题可能是一个缺失的依赖问题。但是AFAIK jmime应该是自包含的(JarAnalyzer不会提供任何东西,但我不确定如果缺少一个依赖jar,它是否会提供任何东西)。

有人有什么想法吗?


是的,听起来您必须创建包含所需jar的库,并将它们作为依赖项添加到模块中。


首先,你应该尝试文件|无效缓存,如果没有帮助,删除IDEA系统目录。然后重新导入Maven项目,看看它是否有帮助。

在一些奇怪的情况下,编译类可能会报告错误的信息并混淆IDEA。使用javap验证这个jar中的类报告正确的名称。


我只是有这个问题,它就是不会消失。我最终删除了~中的IntelliJ配置目录,重新构建了我的IntelliJ项目。(这最终只花了大约15分钟,相比之下,要花一个小时来解决缓存文件等问题。)

请注意,我的猜测是最初的问题是由javathings.blogspot.com/2009/11/too-many-open-files-in-intellij-idea.html之类的东西引起的(注意:截至2018年,该链接已经失效,但archive.org有一个页面的副本,从这个答案第一次被写出来的时候开始-ed.),或者是磁盘空间/内存问题导致Java崩溃。IntelliJ似乎被破坏了。


另一件需要检查的事情是:确保依赖关系没有重复。在我的案例中,我发现显示这种行为的模块是错误配置的,如下所示:它依赖于另一个模块,它依赖于另一个模块生成的jar。这意味着每个引用的符号都是重复的,并且是模糊的。


一个额外的步骤,当我做文件->无效缓存和重新启动IDE,打开一个项目。它弹出了一个toastbox在右上角,询问我是否启用自动导入,这解决了问题。


下面的技巧帮我解决了这个问题:

右击代码编辑器 悬停在Maven上并展开 点击“重新导入”

我的想法版本是12.0.4


另一种选择。

我在使用JDK7_07时也遇到了这个问题。我在这里尝试了所有的答案(除了删除IDEA System Directory)。但是,我还是有问题。所以我做的是:

安装最新的JDK (JDK7_45),并将Intellij的JDK设置为新的JDK,它就可以工作了。


在使我的缓存无效并重新启动后;并确认我的maven设置是好的,我仍然看到“无法解析符号”的模块,我肯定已经设置为一个依赖。结果发现我把瞄准镜设错了。

您可以通过右键单击模块并选择打开模块设置来检查。单击依赖项选项卡,并验证不可解析依赖项的范围设置为Compile。


重新导入项目对我来说很有效。 右键单击项目-> Maven ->重新导入

当我做文件->无效缓存和重新启动IDE,打开一个项目。它在右上方显示了一个对话框“检测到Maven更改”,并提供了导入和启用自动导入的选项。即使在将项目导入到这里之后,我也遇到了同样的问题。上述步骤解决了问题。


修复已经发布了吗?出现的问题最初影响v11/12由于“编译器检修”早在2013年。2014年底在Jira就相关问题进行了讨论。 http://youtrack.jetbrains.com/issue/IDEA-98425

同样在Jira上,IDEA-98425被标记为固定但未验证(v12.0.3)。以下解决方案均无法帮助解决Windows 13.1.1版本的“无法解析符号”问题

a.删除。idealic13文件夹(然后,文件\失效缓存/重新启动)

b.从Maven项目窗口,

b.1 mvn - u idea:idea - >执行这个maven目标假设重新加载依赖项。这在以前的工作,但自从上次FRI,执行这个maven目标失败,因为它试图重新编译项目(当然它失败为“无法解析符号”,这就是我试图通过运行这个命令在第一个地方修复)mvn -version -显示maven版本引用3.2.5,它正在工作

b.2只需右键单击项目,并重新导入

b.3文件\无效缓存/重新启动

c.尝试启用和禁用此设置:File -> Settings -> Maven -> Importing -> "Use maven3 to import project"

d.设置\ Maven \ Multiproject构建失败策略=结束失败(而不是默认)

没有什么工作。Maven上的IntelliJ支持发生了什么。

https://youtrack.jetbrains.com/issue/IDEA-99302

来自JetBeans发布历史,https://www.jetbrains.com/company/history.jsp

IntelliJ v14 2014年11月

IntelliJ v13 12月2013

我假设v12修复(尽管未经验证)将被合并到后续版本中。有人在哪个IntelliJ版本上有类似的问题吗?请分享你的经验。IntelliJ maven支持似乎中断了。


对于Gradle用户:

您可能需要将项目与构建同步。gradle文件。

你可以右键单击Project窗格下的gradle文件来实现这个功能,但这对我来说似乎没什么用(我怀疑我的版本有bug)。如果发生这种情况,您就会知道,因为它不会启动您正在等待的任何IntelliJ任务。相反,打开Gradle Tool窗格,然后单击同步(刷新)按钮。这为我工作,无效缓存和重新启动没有。

我自己的情况:我在用Gradle使用Scala项目,不得不这么做。


对于Intellij Idea用户,在导入项目之前执行以下命令可能会有所帮助:

./gradlew build
./gradlew idea

项目结构:

src -> main -> scala -> mypackages

工作:

右键单击scala文件夹,然后单击“Mark Directory as Sources Root”。


项目结构中不一致/重复的模块名称导致了我的这个问题。

进入文件->项目结构->模块 单击带有红色下划线的模块 找到“依赖项”选项卡 确保红色的依赖项确实存在于依赖项列表中。如果不是,重命名它们以匹配现有的依赖项名称

当IntelliJ没有正确关闭,因此不能正确保存重命名的模块名称时,就会发生这种情况。


在我的例子中,只删除了buildDir。 在这种情况下,File | Invalidate Caches无效。

当我在文件| Invalidate缓存之前构建|使项目时,一切工作正常。


以上的解决方案对我都不起作用。我们要做的就是拆除主水管。我手动文件,它突然工作了。


如果是maven项目,那么只需进入设置->构建工具-> maven ->导入。 选中“自动导入maven项目”复选框。 就能解决问题。


打开“设置” 搜索“Maven” 点击“Maven”下的“忽略文件” 取消选中包含缺失依赖项的pom.xml文件 单击“OK” 点击文件-> Invalidate Caches/Restart… 点击“无效并重新启动”


无效缓存为我工作,但运行后的应用程序有同样的错误。

所以我尝试了(Intellij):

1—菜单栏—重构|构建|运行|工具 -单击“构建”,然后“重建项目”

2百万

3 -右键单击项目> Maven >生成源代码和更新文件夹

希望这对你有用。

谢谢


以上的解决方案都不能解决我的问题。我有同样的问题,代码编译良好,但IntelliJ显示它无法找到导入。尽管IntelliJ建议从代码完成开始导入。

我的解决方案是将所有内容移到默认包中,删除com.foo.bar包,然后重新创建它,并将所有内容移回。


这在这个问题的另一个答案中提到过,但这一个答案就解决了这个问题。我在IntelliJ之外的一个单独的终端上完成所有的构建。因此,缓存需要设置适当的权限,以便IntelliJ应用程序读取它们。

从项目的根文件夹运行它。

$ mvn -U idea:idea

或者您导入的文件太大。这是我的情况下,当我改变Intellij属性:ead.max.intellisen.filesize(路径是${idea dir}/bin/idea.properties)到一个更大的值,如25000,并重新启动IDE,问题消失了。希望这能有所帮助。


建议的解决方案并不奏效。我不得不取消忽略几个项目,右键单击pom => maven =>取消忽略项目。

然后在

mvn clean install -T 6 -DskipTests

在控制台,IntelliJ又快乐起来。不知道这些项目是如何被忽视的……


有时候,我只是打开项目结构,点击项目,然后选择一个SDK版本。


当我换到一台新电脑时,也遇到了类似的问题。

我复制了所有的IDEA文件(甚至相关的%APPDATA%-文件夹),但是Maven构建成功了,但是IDEA在构建时没有从依赖项中找到任何类。

解决方案:我从一个新的干净的IDEA配置文件开始,从%APPDATA%-folders中删除文件夹


对于Idea 2017.1 + Gradle,插件有点bug。尝试了所有的同步,无效+重启,没有工作。根据https://github.com/gradle/gradle/issues/2315的说法,这对我来说很管用: 1. 亲密的想法 2. 在命令行输入gradle idea(应该生成3个文件:.iml, .ipr, .iws) 3.运行idea并打开创建的文件.ipr,这将从头开始导入您的项目,并在这3个文件中使用硬连接依赖项


MVN想法:这个想法对我有用。在这里找到的。花了一个多小时,希望能有所帮助


如果没有工作,右键单击您的源目录,将目录标记为“源目录”,然后右键单击项目目录和maven ->重新导入。

这解决了我的问题。


删除:iml文件在java和测试文件夹内的项目和 无效并重新启动。

它会问我是否可以删除项目。是的。错误将消失。


“File ->使缓存无效并重新启动”将解决所有依赖项。


是什么帮助我解决了这个问题:

我有另一个分支,已经切换到该分支,并建立了mvn清洁安装项目。一切正常,然后切换回master,重新构建项目,错误消失了。无效缓存和重新启动没有帮助我。


对我有用的是“将红色标记类所在的目录标记为目录源根”,之后红色标记就消失了。似乎不知道为什么没有标记。


有时,当您创建像com.mydomain.something这样的包时,目录结构没有创建,只剩下一个名为com.mydomain.something的文件夹 “com.mydomain。在这种情况下,您应该创建目录结构,例如

com
|_mydomain
  |_something 

进入“文件->项目结构-> SDK”,检查SDK文件路径是否正确。


导入标准java库(如java.beans.*)时遇到问题

通过将其指向正确的JRE路径,在我的Redhat 7系统上修复了它。

文件- > ProjectStructure - > sdk - > 1.8 更改“JDK主路径:”为/usr/lib/jvm/java-1.8.0-openjdk-1.8.0161-2.b14.el7。而不是/usr/lib/jvm/java-1.8.0-openjdk-1.8.0161-2.b14.el7_4.x86_64

jdk的前一个路径(路径中有_4的差异)几乎没有任何内容。它缺少许多java库。


在我的情况下,我试图从IntellijIdea打开一个春季启动项目,得到了相同的问题,如无法导入所有春季相关文件。

然后我说:

文件->关闭项目->导入项目->从外部模型导入->选择Gradle ->下一步->从文件位置选择项目->完成

现在一切正常。

我在这里看到了很多答案,但我最终找到了这个解决方案。它可以用于像我这样的人。


其他的答案对我都不起作用。我的导入没有被解析,因为IntelliJ指向了错误的.m2文件。

IntelliJ版本:IntelliJ Idea 2018.1.5

.m2目录的位置指向了错误的路径。我所做的修复就是将IntelliJ重新指向正确的.m2目录并更新它。

首先,进入:文件->设置->构建,执行,部署->构建工具->Maven

我必须更改用户设置文件:和本地存储库:到我的.m2目录的正确位置。

在此之后,进入:文件->设置->构建,执行,部署->构建工具->Maven->存储库

并按“更新”按钮。


如果我所有的pom.xml文件都配置正确,并且IntelliJ中的Maven仍然存在问题,我将执行以下步骤

Read how to use maven in IntelliJ lately Make sure IntelliJ is configured to use Bundled Maven 3 Find and TERMINATE actual java process that is executing Maven 3 repos indexing for IntelliJ(Termination can be done while IntelliJ is running). In case any problems with indices or dependencies not available(thought repositories were configured in pom.xml). Forced Update for all repositories in "IntelliJ / Settings / Build Tools / Maven / Repositories / ". Takes most of the time, disk space and bandwidth! Took me 20+ minutes to update index for Maven central repo. Hit Re-import all Maven project once again from IntelliJ It is a good practice to do steps 1-4 to leave IntelliJ and its demon java processes running over night, if you have multiple repositories and a complex project, so you have everything in sync for the next day. You can in theory use all popular indexed repos out there and launch index update for all repos at the same time(I suppose IntelliJ creates a queue and runs updates one after another) then it can take hours to complete(you will need to increase heap space for that too).

注: 我花了几个小时来理解(步骤3)处理maven索引更新的IntelliJ的java恶魔进程做错了,我只需要让IntelliJ从头开始启动它。问题解决了,甚至没有重新启动IntelliJ本身。


对于MAVEN,

我尝试了以上所有的方法,但都没有找到解决方案,

以下是我尝试过的步骤(一些解决方案的混合),

mvn清洁 mvn的想法:清洁 使缓存无效并重新启动 删除在项目结构中看到的所有额外的.iml文件。 在项目的根目录下,运行mvn idea:idea和mvn clean install,重新导入maven项目的所有依赖项。

(确保除了项目/子项目的。iml文件之外没有额外的。iml文件)


如果您的maven项目是一个多模块项目,请检查intellij是否忽略了某些模块。

单击“View -> Tool Windows -> Maven Projects”,检查是否有模块被忽略(被忽略的模块显示为灰色,例如下图中的gs-multi-module)。

右键单击被忽略的模块并选择Unignore Projects。

然后等待intellij完成索引,之后它将工作。


自动检查导入Maven项目,修复了我的问题。我花了两个小时弄清楚我哪里做错了。终于把它修好了。


对于Gradle项目:

退出IntelliJ IDEA 删除<problem -project-root>/. txt文件。想法目录 删除<problem -project-root>/. txt文件。gradle目录 删除<problem -project-root>中的所有。iml文件 windows命令提示符:DEL /S /Q *.iml Linux:查找。| grep -e .iml$ | xargs rm 用Gradle将项目重新导入IntelliJ IDEA


第一个建议无效缓存/重新启动…对我来说不管用其他方法也不管用。它最终是我的maven回购设置不正确,我通过手动覆盖settings.xml和存储库目录来修复这个问题:

File -> Settings…->构建,执行,部署->构建工具-> Maven

然后,对于用户设置文件和本地存储库,检查覆盖并将其指向正确的settings.xml和存储库目录。


在我看来,这种情况经常发生在依赖关系罐也是肥胖罐的时候。幸运的是,我控制了Fat Jar的构建,在把它变成一个非Fat Jar之后,事情就顺利了。没有任何其他修复任何答案或评论这里对我有效。另外可能值得注意的是,我的代码是在Kotlin中,而Fat Jar也捆绑了一些Kotlin依赖项。


验证成功。我的想法是2019.2

快速修复: 1.使用maven安装您依赖的模块,然后重新导入所有模块 2.编译当前模块,如果仍然没有找到,关闭你的所有想法窗口,重新启动想法。


找出pom文件中找不到的包。 然后从本地存储库中删除它们。

我的项目也面临同样的问题,因为pom中的一个罐子无法正确加载。


我测试了上面所有的解决方案,最后决定手动清空Maven存储库(实际上我在linux上删除了.m2文件夹)。这招奏效了。


按“shift”两次>“重新导入所有Maven项目”总是为我工作。


以前的答案对我不起作用。从2020.1版本切换到2018.2版本,一切似乎都很好。


我试过无效缓存,它没有为我工作。

然而,我尝试从平台设置中删除jdk,并将其添加回来,它工作了。

以下是如何做到这一点。

Project Settings -> SDKs -> Select the SDK -> Remove (-) -> Add it back again (+)

在我的案例中,我的项目使用的是Lombok,而我在IntelliJ中缺少Lombok插件。安装后,一切工作正常。


在我的例子中,一位同事将Lombok添加到项目中,我必须安装Idea Lombok插件。在您的情况下,它可能是其他需要插件的东西。


在IntelliJ IDEA 2020.3中,选择:

文件>无效缓存/重启…>无效并重启 当提示下载预构建的共享索引时: 不导入共享索引:关闭对话框或选择“More actions”>不再显示


对于Ivy用户和IntelliJIdea2020.xx

如果对已经回答的问题没有帮助, 关闭IntelliJ并完全删除文件夹: C:\Users\ {username} \ AppData \ \ JetBrains \ IntelliJIdea2020.xx 重新启动IntelliJ项目,它应该会解决之前未正确加载的依赖项。


我嫉妒你们所有通过文件/无效缓存解决问题的人。我花了几个小时尝试了这个问题的所有方法,还从网上找了一些其他的方法。

这个神奇的菜单项没有为我做这件事,所以我自己通过破坏%USERPROFILE%\AppData\Local\JetBrains\IntelliJIdea2020.3\缓存来使缓存失效

一旦我这样做并重新启动IntelliJ(2020.3),索引被重新构建,错误就消失了。


我在使用Maven Importer JDK时遇到了问题——不知怎的,它自动切换到JDK 11,但Maven项目重新加载只适用于JDK 8。


在使用Kotlin构建库时,我也遇到了类似的问题。我通过gradle包含了图书馆。 Intellij能够运行我的应用程序,但不能解析某些类及其方法。 然后我意识到我的Intellij中的Kotlin插件版本已经过时了,并且低于构建库的Kotlin版本。所以我更新了Kotlin插件 文件—>设置—>语言和框架—>Kotlin,它解决了这个问题。

我尝试了文件|无效缓存,删除。idea文件夹,缓存文件夹,重新导入项目。但是什么都不管用。

所以更新相应的插件会很有帮助。


更新2022

intellij2022.1有一个交互式的,逐步的过程文件->修复IDE。它将引导您依次执行5个步骤,在使所有项目的缓存无效之前,尝试并解决当前项目的此问题。来自IDEA文档:

刷新项目索引 重新扫描项目索引 开放项目 删除共享索引 重建索引项目 使缓存无效并重新启动

步骤1- 3固定它为我的项目。


我有一个问题,IntelliJ不能解决类,如字符串或列表,甚至java。问题是没有SDK被用于该项目,进入文件>项目结构>项目> SDK,设置适当的SDK,并单击应用为我修复它


我曾经有一个2020.1社区。我修复了安装2020.3终极版的问题。

这似乎发生在我使用Kotlin库时。

没有任何其他修复任何答案或评论这里对我有效。


Intellij中的无效缓存和重新启动为我工作,但重新启动后,我需要等待重新索引一切。对于我的项目,这需要超过10分钟。

我发现,在没有缓存失效的情况下,简单地重新启动后,问题就消失了,这种情况并不少见。不总是这样,但经常会有帮助。


对于一个简单的解决方案,我只是删除了我的IntelliJ版本(以及所有相关文件)并重新安装它。重新导入项目后,这些错误就消失了。


我试着

File ->  Invalidate and Restart

这对我没用。

真正有效的解决方案:

Project Structure -> Modules -> select target folder -> Right click generated-sources and select sources -> Apply -> ok