平台:IntelliJ Community Edition 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的设置=> Maven =>存储库服务和更新了我的本地存储库(以便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 =&gt;编译'StackOverflowQuestion.java'正确编译所有内容,我为这个类创建的单元测试运行正常(虽然意图标记调用create()作为问题区域)。
所以在某处,IntelliJ忽略了意图子系统的jmime.jar文件。我很困惑,因为log4j依赖工作正常,一切都编译并运行正常。 F12(“Go To Declaration”)适用于Logger导入,但会中断所有jmime导入。
哦,另外一件事,如果我转到“Projects”窗口的“Packages”视图中,会出现“com.hunnysoft.jmime”包,我可以看到我在上面的代码片段中导入的所有类“库”。从pom.xml文件中删除上述依赖项会导致此包消失并且编译中断。
检查的类路径似乎已损坏,但在Settings =&gt;中似乎没有任何设置。意图|编译器区域(不是我预期的任何这样的设置,我相信IDEA应该已经知道基于pom文件和JDK的正确类路径。)
作为最后的实验,我创建了一个全新的标准J2SE应用程序项目(不使用maven),并将jmime.jar文件作为其库之一直接添加到项目中。我遇到了与上述新项目完全相同的问题。
这是来自jmime jar文件的MANIFEST.MF。
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.
我在这个jar文件中没有看到任何异常。
我最好的猜测是问题可能是缺少依赖性问题。但是AFAIK jmime应该是自包含的(JarAnalyzer没有提出任何东西,但是我不确定如果缺少依赖jar会的话)。
那么,有人有任何IDAs吗?
答案 0 :(得分:843)
首先,您应该尝试File | Invalidate Caches
,如果没有帮助,请删除IDEA system directory。然后重新导入Maven项目,看看它是否有帮助。
在一些奇怪的案例中,编译类可能会报告错误信息并混淆IDEA。使用javap验证此jar中的类是否报告了正确的名称。
答案 1 :(得分:95)
以下技巧为我解决了这个问题:
我的想法版本是12.0.4
答案 2 :(得分:25)
对于Gradle用户:
您可能需要将项目与<script>
var canvas = document.getElementById('myCanvasCircle'),
ctx = canvas.getContext('2d'),
circle = {},
drag = false,
circleMade = false,
mouseMoved = false;
function draw() {
ctx.beginPath();
ctx.arc(circle.X, circle.Y, circle.radius, 0, 2.0 * Math.PI);
ctx.stroke();
}
function mouseDown(e) {
ctx.restore();
circle.startX = e.pageX - this.offsetLeft;
circle.startY = e.pageY - this.offsetTop;
circle.X = circle.startX;
circle.Y = circle.startY;
if (!circleMade) {
circle.radius = 0;
}
drag = true;
}
function mouseUp() {
drag = false;
circleMade = true;
if (!mouseMoved) {
circle = {};
circleMade = false;
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
mouseMoved = false;
ctx.save();
}
function mouseMove(e) {
if (drag) {
mouseMoved = true;
circle.X = e.pageX - this.offsetLeft;
circle.Y = e.pageY - this.offsetTop;
if (!circleMade) {
circle.radius = Math.sqrt(Math.pow((circle.X - circle.startX), 2) + Math.pow((circle.Y - circle.startY), 2));
}
ctx.clearRect(0, 0, canvas.width, canvas.height);
draw();
}
}
function init() {
canvas.addEventListener('mousedown', mouseDown, false);
canvas.addEventListener('mouseup', mouseUp, false);
canvas.addEventListener('mousemove', mouseMove, false);
}
init();
</script>
文件同步。
您可以右键单击项目窗格下的gradle文件来执行此操作,但似乎没有为我做任何事情(我怀疑我的版本中存在错误)。你知道这是否会发生,因为它不会发生这种情况。启动您将等待的任何IntelliJ任务。而是 open up the Gradle Tool pane ,然后点击同步(刷新)按钮。这对我有用,在那里无效缓存并重新启动没有。
我自己的情况:我正在使用Gradle的Scala项目并且必须这样做。
答案 3 :(得分:22)
上述解决方案均不适合我。什么做了手动删除main.iml文件,它突然工作。
答案 4 :(得分:19)
当我执行文件时,还有一个额外的步骤 - &gt;使高速缓存无效并重新启动IDE,打开一个项目。它在右上方弹出一个toastbox,询问我是否启用自动导入,这解决了问题。
答案 5 :(得分:17)
在同一个问题here的另一个答案中提到了这一点,但仅此一点就为我解决了这个问题。我在IntelliJ之外的一个单独的终端中完成所有构建。因此缓存需要为IntelliJ应用程序设置适当的权限才能读取它们。
从项目的根文件夹运行它。
$ mvn -U idea:idea
答案 6 :(得分:12)
要检查的另一件事:确保不重复依赖项。在我的情况下,我发现表现出这种行为的模块配置错误如下:它依赖于另一个模块,并且它依赖于另一个模块生成的jar。这意味着重复引用的每个符号都是不明确的。
答案 7 :(得分:9)
项目结构中的模块名称不一致/重复导致了这个问题。
File -> Project Strucutre -> Modules
当IntelliJ未正确关闭,因此无法正确保存重命名的模块名称时,可能会发生这种情况。
答案 8 :(得分:4)
我嫉妒你们所有通过文件/无效缓存解决问题的人。我只是花了几个小时在这个问题上尝试了所有的方法,还有一些来自网络的其他问题。
魔法菜单项对我不起作用,所以我通过核弹 %USERPROFILE%\AppData\Local\JetBrains\IntelliJIdea2020.3\caches
一旦我这样做并重新启动 IntelliJ (2020.3),索引就会重建,我的错误就消失了。
答案 9 :(得分:4)
没有其他答案对我有用。我的导入未得到解决,因为IntelliJ指向错误的.m2文件。
IntelliJ版本: IntelliJ Idea 2018.1.5
我在 .m2 目录中的位置指向错误的路径。我要做的所有修复工作都是将IntelliJ重新指向正确的.m2目录并进行更新。
首先,转到:文件->设置->构建,执行,部署->构建工具-> Maven
我必须将用户设置文件:和本地存储库:更改为我的.m2目录的正确位置。
此后转到:文件->设置->构建,执行,部署->构建工具-> Maven->存储库
,然后单击“更新”按钮。
答案 10 :(得分:4)
我的项目结构:
src -> main -> scala -> mypackages
什么有效:
右键单击scala
文件夹,然后单击&#34;将目录标记为源根&#34;。
答案 11 :(得分:3)
我刚刚遇到这个问题而且它不会消失。我最终消灭了~
中的IntelliJ配置目录,并从头开始重建了我的IntelliJ项目。 (最后只花了大约15分钟,而花费一个小时试图解决缓存文件的问题等。)
请注意,我的猜测是,最初的问题是由javathings.blogspot.com/2009/11/too-many-open-files-in-intellij-idea.html
引起的(注意:截至2018年,该链接已死,但当此答案为“时,archive.org有a copy of the page第一次写入。)或导致Java崩溃的磁盘空间/内存问题。 IntelliJ似乎只是被破坏了。
答案 12 :(得分:3)
答案 13 :(得分:2)
重新导入项目对我有用。 右键单击项目 - &gt; Maven - &gt; Reimport
当我做文件时 - &gt;使高速缓存无效并重新启动IDE,打开一个项目。它显示了右上角“检测到Maven更改”的对话框,并提供了导入和启用自动导入的选项。即使在这里导入项目后,我也遇到了同样的问题。上面的步骤解决了这个问题。
答案 14 :(得分:2)
使我的缓存无效并重新启动后;并确认我的maven设置没问题,我仍然看到“无法解析符号”的模块,我肯定已将其设置为依赖项。结果我把它设置到了错误的范围。
您可以通过右键单击模块并选择“打开模块设置”进行检查。单击依赖项选项卡,并验证不可解析依赖项的范围是否设置为“编译”。
答案 15 :(得分:2)
如果您的maven项目是一个多模块项目,请检查intellij是否忽略了某些模块。
gs-multi-module
)。Unignore Projects
。然后等待intellij完成索引编制,此后它将起作用。
答案 16 :(得分:2)
答案 17 :(得分:2)
在我的情况下,我试图从IntellijIdea打开一个弹簧启动项目得到了同样的问题,如无法导入所有弹簧相关文件。
然后我做了:
档案 - &gt;关闭项目 - &gt;导入项目 - &gt;从外部模型导入 - &gt;选择Gradle - &gt;下一步 - &gt;从文件位置选择项目 - &gt;完成
现在一切都按预期工作正常。
我在这里看到很多答案,但我终于找到了这个解决方案。它可能会用于像我这样的人。
答案 18 :(得分:2)
另一种选择。
当我使用JDK7_07时,我也遇到了这个问题。我在这里尝试了所有答案(除了删除IDEA系统目录)。但是,我仍然遇到了问题。所以我做的是:
安装最新的JDK(它是JDK7_45),并将Intellij的JDK设置为新的JDK,它可以工作。
答案 19 :(得分:2)
有时,我只是打开项目结构,然后单击项目,然后choose a SDK version。
答案 20 :(得分:1)
对于Gradle项目:
<problematic-project-root>/.idea
目录<problematic-project-root>/.gradle
目录.iml
中的所有<problematic-project-root>
文件
DEL /S /Q *.iml
find . | grep -e .iml$ | xargs rm
答案 21 :(得分:1)
对于Intellij Idea用户,甚至在导入项目之前,此命令可能会有所帮助:
./ gradlew build 。 / gradlew idea
答案 22 :(得分:1)
有时候,当你创建像com.mydomain.something这样的包时,目录结构不会被创建而你只剩下一个文件夹 &#34; com.mydomain.something&#34;在这种情况下,您应该创建目录结构,如
com
|_mydomain
|_something
答案 23 :(得分:1)
我尝试使缓存无效,这对我没有用。
但是,我尝试从Platform Settings(平台设置)中删除jdk,然后将其重新添加即可。
这是操作方法。
Project Settings -> SDKs -> Select the SDK -> Remove (-) -> Add it back again (+)
答案 24 :(得分:1)
就我而言,我的项目正在使用Lombok,而我却缺少IntelliJ中的Lombok插件。安装后,一切正常。
答案 25 :(得分:1)
建议的解决方案不起作用。我不得不 unignore 几个项目,右键点击pom =&gt; maven =&gt; unignore项目。
之后
mvn clean install -T 6 -DskipTests
在控制台中,IntelliJ再次感到高兴。不知道这些项目是如何被忽视的......
答案 26 :(得分:1)
以上解决方案均未为我解决。我有同样的问题,代码编译良好,但IntelliJ显示它无法找到导入。即使IntelliJ建议从代码完成开始导入。
我的解决方案是将所有内容移至默认包中,删除com.foo.bar
包,然后再次创建它并将所有内容移回。
答案 27 :(得分:1)
答案 28 :(得分:1)
是的,听起来你必须创建包含所需JAR的库,并将它们作为依赖项添加到模块中。
答案 29 :(得分:1)
在我的情况下,只删除了buildDir。
在这种情况下,File | Invalidate Caches
不起作用。
当我在Build | Make Project
之前File | Invalidate Caches
时,一切正常。
答案 30 :(得分:0)
就我而言,一位同事向项目添加了Lombok ,我不得不安装Idea Lombok插件。就您而言,可能是其他需要插件的东西。
答案 31 :(得分:0)
答案 32 :(得分:0)
以前的答案对我不起作用。从版本2020.1
切换到2018.2
,一切似乎都很好。
答案 33 :(得分:0)
对于 Ivy 用户和 IntelliJIdea2020.xx
如果对已经回答的问题没有任何帮助,
关闭 IntelliJ 并完全删除文件夹:
C:\Users\{用户名}\AppData\本地\JetBrains\IntelliJIdea2020.xx
重新启动 IntelliJ 项目,它应该可以解决之前未正确加载的依赖项。
答案 34 :(得分:0)
我测试了上述所有解决方案,最后决定手动清空Maven存储库(实际上,我删除了Linux上的.m2
文件夹)。它成功了。
答案 35 :(得分:0)
就我而言,我必须执行以下操作:
您可以在此处找到您的 idea.system.path:https://intellij-support.jetbrains.com/hc/en-us/articles/206544519-Directories-used-by-the-IDE-to-store-settings-caches-plugins-and-logs
答案 36 :(得分:0)
1,在您的pom文件中找到找不到的包。 2,然后从本地存储库中删除它们。
我的项目遇到了这个问题,因为pom中的一个jar无法正确加载。
答案 37 :(得分:0)
验证成功。我的想法版本是2019.2
快速修复: 1.使用maven安装您依赖的模块,然后重新导入所有模块 2.编译当前模块,如果仍然找不到,请关闭所有提示窗口,重新启动提示。
答案 38 :(得分:0)
当依赖项jar也是Fat Jar时,这似乎发生在我身上。幸运的是,在将其制成非胖子罐之后,我就控制了胖子罐的建造,然后一切正常。此处对任何答案或评论的其他修复均无济于事。也可能值得注意的是,我的代码在Kotlin中,并且Fat Jar也捆绑了一些Kotlin依赖项。
答案 39 :(得分:0)
无效缓存/重新启动的第一条建议对我不起作用,其他解决方案也没有。最终导致我的Maven仓库被错误地设置,我通过手动覆盖settings.xml和存储库目录来解决此问题:
文件-> 设置 ...-> 构建,执行,部署-> 构建工具- > Maven
然后针对用户设置文件和本地存储库,检查覆盖,并将其指向正确的settings.xml和存储库目录。
答案 40 :(得分:0)
答案 41 :(得分:0)
对于MAVEN,
我尝试了所有上述方法,但是找不到解决方法,
下面是我尝试的步骤(混合了一些解决方案)
mvn clean
MVN idea:clean
(确保除了项目/子项目的.iml文件之外,没有其他.iml文件)
答案 42 :(得分:0)
如果我所有的pom.xml文件都配置正确,但是在IntelliJ中我仍然遇到Maven问题,请执行以下步骤
P.S。 我花了几个小时来了解(第3步),IntelliJ的用于处理maven索引更新的java恶魔进程做错了什么,我只需要使IntelliJ从头开始即可。 问题已经解决,甚至没有重新启动IntelliJ本身。
答案 43 :(得分:0)
导入标准java库(例如java.beans。*
)时遇到问题通过将其指向正确的JRE路径,在我的Redhat 7系统上修复了它。
文件&GT; ProjectStructure-&GT; SDKs-&GT; 1.8 将'JDK home path:'更改为/usr/lib/jvm/java-1.8.0-openjdk-1.8.0161-2.b14.el7.x86_64而不是/usr/lib/jvm/java-1.8.0-openjdk -1.8.0161-2.b14.el7_4.x86_64
jdk的前路径(路径中的_4差异)几乎没有任何内容。它缺少许多java库。
答案 44 :(得分:0)
转到文件 - &gt;项目结构 - &gt; SDK并检查您的SDK文件路径是否正确。
答案 45 :(得分:0)
对我有用的是&#34; Mark作为目录源root&#34;红色标记类所在的目录,红色标记消失后。似乎由于某种原因它没有标记。
答案 46 :(得分:0)
是什么帮助我解决了这个问题:
我有另一个分支,已切换到该分支并使用mvn clean install构建项目。一切都很好,然后切换回主人并再次构建项目,错误消失了。无效的缓存和重启对我没有帮助。
答案 47 :(得分:0)
"File -> Invalidate Cache and Restart" will resolve all dependencies.
答案 48 :(得分:0)
如果没有问题,请右键单击您的源目录,将目录标记为&#34;源目录&#34;然后右键单击项目目录和maven - &gt;重新导入。
这解决了我的问题。
答案 49 :(得分:0)
mvn idea:idea
为我工作。找到它here。花了一个多小时,希望它有所帮助
答案 50 :(得分:0)
对于Idea 2017.1 + Gradle,该插件有点儿错误。尝试所有同步,无效+重启,没有任何工作。根据{{3}},这对我有用: 1.关闭理念 2.在命令行中键入gradle idea(应生成3个文件:.iml,.ipr,.iws) 3.运行想法并打开创建的文件.ipr,这应该从头开始导入您的项目,在这3个文件中使用硬连线依赖
答案 51 :(得分:0)
当我切换到新电脑时,我遇到了类似的问题。
我复制了所有IDEA文件(甚至是相关的%APPDATA%文件夹),但是Maven构建成功了,但IDEA在构建它时没有找到依赖项中的任何类。
解决方案:通过从%APPDATA%文件夹中删除文件夹,我开始使用新的干净IDEA配置文件
答案 52 :(得分:0)
在我的情况下,在我检查了maven项目中文件的大量重组后,出现了这个问题。在退房时,我还有一些未经检查的更改仍处于活动状态。据我所知,这些更改不是针对任何正在重组的文件。
使缓存无效并重新启动对我不起作用。 工作是什么:
答案 53 :(得分:0)
或者你导入的文件太大了。这是我的情况,当我将Intellij属性更改为:iead.max.intellisen.filesize(path is $ {idea dir} /bin/idea.properties)更大值,如25000,并重新启动IDE,问题消失了。希望这会有所帮助。
答案 54 :(得分:0)
无效的缓存为我工作但在运行应用程序后出现了同样的错误。
所以我尝试了( Intellij ):
1 - 菜单栏 - 重构| 构建 |运行|工具 - 点击构建,然后点击重建项目
2 - MVN clean
3 - 右键单击项目&gt; Maven&gt;生成源和更新文件夹
希望这适合你。
由于
答案 55 :(得分:0)
如果maven项目然后只是去设置 - &gt;构建工具 - &gt; maven - &gt;导入。 选中复选框&#34;自动导入maven项目&#34;。 将解决问题。