平台: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的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'”, 但 Build => Compile'StackOverflowQuestion.java'可以正确编译所有内容,并且我为此类创建的单元测试可以正常运行(尽管这些意图也将对create()的调用标记为问题区域)。
因此,在某个地方,IntelliJ以某种方式忽略了意图子系统的jmime.jar文件。 我很困惑,因为log4j依赖项可以正常工作,并且一切都可以编译并正常运行。 F12(“转到声明”)对Logger导入有效,但对所有jmime导入均无效。
哦,另一件事,如果我转到“项目”窗口中的“包”视图,则会出现“ com.hunnysoft.jmime”包,并且可以在上面的“代码库”下的代码段中看到导入的所有类。 。 从pom.xml文件中删除上述依赖关系会导致该程序包消失,并且编译会中断。
看来检查的类路径已损坏,但似乎在“设置” =>“意图” |“位置”中没有任何设置。 编译器区域(不是我期望的任何此类设置,我相信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,它将不会)。
那么,有人有想法吗?
#1楼
要检查的另一件事:确保不重复依赖项。 在我的情况下,我发现表现出这种行为的模块配置错误,如下所示:它依赖于另一个模块,并且依赖于该另一个模块生成的jar。 这意味着要重复引用的每个符号,并且模棱两可。
#2楼
另外一个步骤是,当我执行File-> Invalidate Caches并重新启动IDE时,打开一个项目。 它在右上角弹出一个烤面包机,问我是否启用自动导入,从而解决了该问题。
#3楼
以下技巧为我解决了此问题:
- 右键单击代码编辑器
- 将鼠标悬停在Maven上并展开
- 点击重新导入
我的想法版本是12.0.4
#4楼
对于另一种选择。
当我使用JDK7_07时,我也遇到了这个问题。 我在这里尝试了所有答案(删除IDEA系统目录除外)。 但是,我仍然遇到问题。 所以我要做的是:
安装最新的JDK(它是JDK7_45),并将Intellij的JDK设置为新的JDK,然后它就可以工作了。
#5楼
使缓存无效并重新启动后; 并确认我的Maven设置是可以的,但我仍然看到肯定已设置为依赖项的模块的“无法解析符号”。 原来我将其设置为错误的范围。
您可以通过右键单击模块并选择“打开模块设置”来进行检查。 单击依赖项选项卡,并验证您无法解决的依赖项的范围是否设置为“编译”。
#6楼
重新导入该项目对我有用。 右键单击项目-> Maven->重新导入
当我执行File-> Invalidate Caches并重新启动IDE时,打开一个项目。 它在右上方的“检测到Maven更改”上显示了一个对话框,并提供了导入和启用自动导入的选项。 即使在这里导入项目后,我也遇到了同样的问题。 上面的步骤解决了这个问题。
#7楼
是否已发布固定内容? 由于早在2013年就进行了“编译器大修”,因此出现了最初影响v11 / 12的问题。到2014年年底为止,有关Jira中的相关问题的讨论。http: //youtrack.jetbrains.com/issue/IDEA-98425
同样在Jira上, IDEA-98425被标记为固定但未经验证 (在v12.0.3上)。 以下变通办法都不能帮助解决Windows上版本13.1.1的 “无法解析符号”问题
一种。 删除.IdealIC13文件夹(然后,文件\\使缓存无效/重新启动)
b。 在“ Maven项目”窗口中,
b.1 mvn -U idea:idea –〉执行此Maven目标时,需要重新加载依赖项。 这是上一个方法,但是自从上一个FRI以来,执行此maven目标失败,因为它尝试重新编译项目(当然,它失败,因为“无法解析符号”,这就是我试图通过首先运行此命令来解决的问题) mvn -version —显示引用了3.2.5的maven版本,并且它正在工作
b.2只需右键单击项目,然后重新导入
b.3文件\\使缓存无效/重新启动
C。 尝试启用和禁用此设置:文件->设置-> Maven->导入->“使用maven3导入项目”
d。 设置\\ Maven \\多项目构建失败策略=最终失败(而不是默认值)
什么都没有。 Maven上的IntelliJ支持发生了什么。
https://youtrack.jetbrains.com/issue/IDEA-99302
从JetBeans发布历史记录中, https: //www.jetbrains.com/company/history.jsp
IntelliJ v14 2014年11月
IntelliJ v13十二月2013
我假设v12已修复(尽管未验证 )将包含在后续发行版中。 哪个版本的IntelliJ有类似问题吗? 请分享您的经验。 IntelliJ maven支持似乎已损坏。
#8楼
对于Gradle用户:
您可能需要将项目与build.gradle
文件同步。
您可以右键单击“项目”窗格下的gradle文件来执行此操作, 但这似乎对我没有任何作用(我怀疑我的版本中存在错误)。 您会知道是否会发生这种情况,因为它不会启动您将要等待的任何IntelliJ任务。 而是打开Gradle Tool窗格 ,然后单击“同步(刷新)”按钮。 这对我有用,在其中无效了缓存并没有重新启动。
我自己的情况:我在Gradle中使用Scala项目,并且必须这样做。
#9楼
对于Intellij Idea用户,即使在导入项目之前也可以使用以下命令:
./gradlew构建 。 / gradlew想法
#10楼
我的项目结构:
src -> main -> scala -> mypackages
什么有效:
右键单击scala
文件夹,然后单击“将目录标记为源根”。
#11楼
项目结构中模块名称不一致/重复对我造成了此问题。
- 转到
File -> Project Strucutre -> Modules
- 在单击带红色下划线的模块上
- 转到“依赖项”选项卡
- 确保依赖项列表中确实存在红色的依赖项。 如果不是,请重命名它们以匹配现有的依赖项名称
当IntelliJ无法正常关闭并因此无法正确保存重命名的模块名称时,可能会发生这种情况。
#12楼
就我而言,仅删除buildDir。 在这种情况下, File | Invalidate Caches
File | Invalidate Caches
不起作用。
当我Build | Make Project
在File | Invalidate Caches
之前进行Build | Make Project
File | Invalidate Caches
File | Invalidate Caches
,一切正常。
#13楼
上面的解决方案都不适合我。 这样做是手动删除main.iml文件,然后突然起作用。
#14楼
如果是maven项目,则只需转到设置->生成工具-> maven->导入。 选中“自动导入Maven项目”复选框。 将解决问题。
#15楼
- 打开设置”
- 搜索“ Maven”
- 单击“ Maven”下的“被忽略的文件”
- 取消选中pom.xml文件包含缺少的依赖项
- 点击“确定”
- 单击文件->使高速缓存无效/重新启动...
- 点击“无效并重新启动”
#16楼
Invalidate Caches对我有用,但是在运行应用程序后出现了相同的错误。
所以我尝试了( Intellij ):
1-菜单栏-重构| 建立 运行 工具-点击生成,然后重新 生成 项目
2-MVN清洁
3-右键单击项目> Maven>生成源和更新文件夹
希望这对您有用。
谢谢
#17楼
以上解决方案都没有为我解决。 在代码可以正常编译的情况下,我遇到了同样的问题,但是IntelliJ显示无法找到导入。 即使IntelliJ建议从代码完成开始就进行导入。
我的解决方案是将所有内容移动到默认软件包,删除com.foo.bar
软件包,然后再次创建它,然后将所有内容移回。
#18楼
这是在另一个回答同样的问题提到这里 ,但仅此修复这对我来说。 我在IntelliJ之外的单独终端中进行所有构建。 因此,缓存需要为IntelliJ应用设置适当的权限才能读取它们。
从项目的根文件夹运行它。
$ mvn -U idea:idea
#19楼
建议的解决方案不起作用。 我必须忽略几个项目,方法是右键单击pom => maven =>忽略项目。
然后一个
mvn clean install -T 6 -DskipTests
在控制台中,IntelliJ再次感到高兴。 不知道项目是如何被忽略的...
#20楼
有时,我只是打开项目结构,然后单击项目,然后选择一个SDK版本 。
#21楼
删除项目内java和test文件夹中的:iml文件,并使其无效并重新启动。
它将询问我是否可以删除项目。 同意。 错误将消失。
#22楼
对我有用的是将标记为红色的类所在的目录“标记为目录源根目录”,然后消失。 似乎由于某种原因它未被标记。
#23楼
有时,当您创建诸如com.mydomain.something之类的包时,不会创建目录结构,而您只剩下一个名为“ com.mydomain.something”的文件夹,在这种情况下,您应该创建目录结构,例如
com
|_mydomain
|_something
#24楼
就我而言,我试图从IntellijIdea打开一个spring boot项目,遇到了无法导入所有与spring相关的文件之类的问题。
然后我做了:
文件->关闭项目->导入项目->从外部模型导入->选择Gradle->下一步->从文件位置选择项目->完成
现在一切正常。
我在这里看到了很多答案,但终于找到了解决方案。 它可能适用于像我这样的人。
#25楼
没有其他答案对我有用。 我的导入未解决,因为IntelliJ指向错误的.m2文件。
IntelliJ版本: IntelliJ Idea 2018.1.5
我的.m2目录位置指向错误的路径。 我要做的所有修复工作都是将IntelliJ重新指向正确的.m2目录并进行更新。
首先,转到: 文件->设置->构建,执行,部署->构建工具-> Maven
我必须将用户设置文件:和本地存储库:更改为我的.m2目录的正确位置。
之后,转到: 文件->设置->构建,执行,部署->构建工具-> Maven->存储库
然后单击更新按钮。
#26楼
如果您的maven项目是多模块项目,请检查intellij是否忽略了某些模块。
- 单击查看->工具窗口-> Maven项目,然后检查是否忽略了某些模块(被忽略的模块为灰色,例如下图中的
gs-multi-module
)。
- 右键单击被忽略的模块,然后选择“忽略
Unignore Projects
。
然后等待intellij完成索引编制,此后它将起作用。
#27楼
对于Gradle项目:
- 退出IntelliJ IDEA
- 删除
<problematic-project-root>/.idea
目录 - 删除
<problematic-project-root>/.gradle
目录 - 删除
<problematic-project-root>
所有.iml
文件- Windows 命令提示符 :
DEL /S /Q *.iml
- linux:
find . | grep -e .iml$ | xargs rm
find . | grep -e .iml$ | xargs rm
- Windows 命令提示符 :
- 使用Gradle将项目重新导入IntelliJ IDEA
#28楼
是的,听起来您必须创建包含所需JAR的库,并将它们添加为模块中的依赖项。
#29楼
首先,您应该尝试File | Invalidate Caches
File | Invalidate Caches
,如果File | Invalidate Caches
,则删除IDEA系统目录 。 然后重新导入Maven项目,看看是否有帮助。
在某些奇怪的情况下,编译后的类可能会报告错误的信息,并使IDEA感到困惑。 使用javap验证此jar中的类报告正确的名称。
#30楼
我只是遇到了这个问题,它不会消失。 我最终抹去了~
的IntelliJ配置目录,并从头开始重建了IntelliJ项目。 (最后只花了15分钟,而花了一个小时试图解决缓存文件等问题)
请注意,我的猜测是最初的问题是由诸如javathings.blogspot.com/2009/11/too-many-open-files-in-intellij-idea.html
类的东西引起的(注意:截至2018年,该链接已失效,但当首次写此答案时(ed。),archive.org保留了该页面的副本 。)或磁盘空间/内存问题导致Java崩溃。 IntelliJ似乎刚刚损坏。