Kev*_*tze 521 java intellij-idea maven intellij-inspections
平台: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
Run Code Online (Sandbox Code Playgroud)
Maven将jar文件安装到我的本地存储库中.
然后我进入IntelliJ的Settings => Maven => Repository Services并更新了我的本地存储库(以便IntelliJ重新索引存储库内容).
最后,我将以下依赖项添加到我的pom.xml文件中(就在log4j依赖项之上).
<dependency>
<groupId>jmime</groupId>
<artifactId>jmime</artifactId>
<version>3.1.1e</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我现在创建一个新类如下:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在为了古怪.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文件中删除上述依赖项会导致此包消失并且编译中断.
似乎检查的类路径被破坏了,但在Settings => Intentions |中,似乎没有任何设置.编译器区域(不是我预期的任何这样的设置,我相信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.
Run Code Online (Sandbox Code Playgroud)
我在这个jar文件中没有看到任何异常.
我最好的猜测是,问题可能是缺少依赖性问题.但AFAIK jmime应该是自包含的(JarAnalyzer没有提出任何东西,但我不确定如果缺少依赖jar).
那么,任何人都有任何IDAs?
Cra*_*der 926
首先,你应该尝试File | Invalidate Caches
,如果它没有帮助,删除IDEA系统目录.然后重新导入Maven项目,看看它是否有帮助.
在一些奇怪的情况下,编译类可能会报告错误信息并混淆IDEA.使用javap验证此jar中的类是否报告了正确的名称.
小智 102
以下技巧为我解决了这个问题:
我的想法版本是12.0.4
cer*_*ier 33
以上解决方案都不适合我.什么做了手动删除main.iml文件,它突然工作.
bba*_*ker 29
对于Gradle用户:
您可能需要将项目与build.gradle
文件同步.
您可以右键单击"项目"窗格下的gradle文件来执行此操作,但这似乎对我没有任何作用(我怀疑我的版本中存在错误).你会知道是否会发生这种情况,因为它不会启动你将要等待的任何IntelliJ任务.而是打开Gradle Tool窗格,然后单击同步(刷新)按钮.这对我有用,在那里无效缓存和重启没有.
我自己的情况:我正在使用Gradle的Scala项目并且必须这样做.
Tom*_*Tom 21
这是在另一个回答同样的问题提到这里,但仅此修复这对我来说.我在IntelliJ之外的一个单独的终端中完成所有构建.因此缓存需要为IntelliJ应用程序设置适当的权限才能读取它们.
从项目的根文件夹运行它.
$ mvn -U idea:idea
Run Code Online (Sandbox Code Playgroud)
Lan*_*uhn 13
另一件需要检查的事情:确保依赖项不重复.在我的情况下,我发现表现出这种行为的模块配置错误如下:它依赖于另一个模块,并且它依赖于另一个模块生成的jar.这意味着重复引用的每个符号都是模棱两可的.
Bab*_*yan 11
项目结构中不一致/重复的模块名称对我来说是个问题.
File -> Project Strucutre -> Modules
当IntelliJ未正确关闭并因此无法正确保存重命名的模块名称时,可能会发生这种情况.
2022 年更新
IntelliJ 2022.1 有一个交互式的分步过程File -> Repair IDE
。它会引导您依次完成 5 个步骤,在使所有项目的缓存失效之前尝试解决当前项目的此问题。来自 IDEA 文档:
步骤 1-3 为我的项目修复了该问题。
在 v2022.3 和新 UI 中,此设置现在位于File -> Cache Recovery -> Repair IDE
. 您还可以从那里选择单个步骤。
小智 8
有固定的发表?由于2013年的"编译器大修"而出现了最初影响v11/12的问题.在2014年底之前讨论了Jira的相关问题.http: //youtrack.jetbrains.com/issue/IDEA-98425
同样在Jira IDEA-98425上标记为固定但未经验证(在v12.0.3上).下面的解决方法都没有帮助解决Windows 上版本13.1.1的"无法解决符号"问题
一个.删除.IdealIC13文件夹(然后,File\Invalidate Caches/Restart)
湾 从Maven Projects窗口,
b.1 mvn -U idea:idea - >执行这个maven目标假设重新加载依赖项.这工作正常,但自上次FRI以来,执行此maven目标失败,因为它试图重新编译项目(当然它失败为"无法解析符号",这就是我试图通过首先运行此命令来修复) mvn -version - 显示引用3.2.5的maven版本并且它正在工作
b.2只需右键单击项目,然后重新导入
b.3文件\ 无效缓存/重启
C.尝试启用和禁用此设置:文件 - >设置 - > Maven - >导入 - >"使用maven3导入项目"
d.设置\ Maven\Multiproject构建失败策略=结束时失败(而不是默认)
什么都行不通.在Maven上对IntelliJ支持发生了什么.
https://youtrack.jetbrains.com/issue/IDEA-99302
从JetBeans发布历史记录,https: //www.jetbrains.com/company/history.jsp
IntelliJ v14 NOV 2014
IntelliJ v13 DEC 2013
我假设v12固定(虽然未经验证)将被合并到后续版本中.任何一个与IntelliJ版本有类似问题的人?请分享您的经验.IntelliJ maven支持似乎被打破了.
其他答案都不适合我。我的导入没有得到解决,因为 IntelliJ 指向了错误的 .m2 文件。
IntelliJ 版本:IntelliJ Idea 2018.1.5
我的.m2目录位置指向错误的路径。我所做的只是将 IntelliJ 重新指向正确的 .m2 目录并更新它。
首先,转到:文件->设置->构建、执行、部署->构建工具->Maven
我必须将User settings file:和Local repository:更改为我的 .m2 目录的正确位置。
在此之后转到:文件->设置->构建、执行、部署->构建工具->Maven->存储库
并单击更新按钮。
我的项目结构:
src -> main -> scala -> mypackages
Run Code Online (Sandbox Code Playgroud)
什么工作:
右键单击该scala
文件夹,然后单击“将目录标记为源根目录”。
如果你的maven项目是多模块项目,检查一下intellij是否忽略了某些模块。
gs-multi-module
在下图中)。Unignore Projects
。然后等待intellij完成索引,之后它就会工作。
对于 Gradle 项目:
<problematic-project-root>/.idea
目录<problematic-project-root>/.gradle
目录.iml
文件<problematic-project-root>
DEL /S /Q *.iml
find . | grep -e .iml$ | xargs rm
我嫉妒所有通过 File / Invalidate 缓存解决问题的人。我只是花了几个小时尝试关于这个问题的所有内容,以及来自网络的其他一些问题。
魔法菜单项对我不起作用,所以我自己通过核弹使缓存无效 %USERPROFILE%\AppData\Local\JetBrains\IntelliJIdea2020.3\caches
一旦我这样做并重新启动 IntelliJ (2020.3),索引就会重建,我的错误就消失了。
归档时间: |
|
查看次数: |
451097 次 |
最近记录: |