IntelliJ检查给出了“无法parsing符号”,但仍然编译代码

平台:IntelliJ Community Edition 10.0.3
SDK:jdk1.6.0_21
操作系统:Windows 7

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

然后我使用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> 

我现在创build一个新的类如下:

 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导入它报告:“不能parsing符号”ByteString / Field / FieldBody'“, Build =>编译”StackOverflowQuestion.java“编译正确的一切,我为这个类创build的unit testing运行良好意图标志着创造()作为一个问题领域的呼吁)。

所以在某处,IntelliJ忽略了意图子系统的jmime.jar文件。 我很困惑,因为log4j依赖工作正常,一切编译和运行良好。 F12(“去声明”)工作在logging器导入,但打破了所有的JIMIM导入。

哦,另外一件事,如果我在“Projects”窗口的“Packages”视图中出现“com.hunnysoft.jmime”包,我可以看到上面的代码片段中导入的所有类都在“Libraries” 。 从pom.xml文件中除去上面的依赖项会导致这个包消失,编译中断。

看起来检查的类path已经被破坏了,但是在Settings => Intentions |中,似乎没有任何设置。 编译区(不是我期望的任何这样的设置,我相信IDEA应该已经知道基于pom文件和JDK的正确类path)。

作为最后一个实验,我创build了一个全新的标准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文件中的任何exception。

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

那么,任何人都有任何IDEA?

首先你应该尝试File | Invalidate Caches File | Invalidate Caches ,如果不起作用,请删除IDEA系统目录 。 然后重新导入Maven项目,看看是否有帮助。

在一些奇怪的情况下,编译的类可能会报错信息并混淆IDEA。 validation来自此jar的类使用javap报告正确的名称。

以下技巧为我解决了这个问题:

  • 右键单击代码编辑器
  • 将鼠标hover在Maven上并展开
  • 点击重新导入

我的想法版本是12.0.4

一个额外的步骤,当我做文件 – >无效caching并重新启动IDE,打开一个项目。 它popup一个toastbox的右上angular问我是否启用自动导入,并解决了这个问题。

对于Gradle用户:

您可能需要与您的build.gradle文件同步您的项目。

你可以在Project窗格下右键点击你的Gradle文件来做到这一点, 但这似乎没有为我做任何事情(我怀疑我的版本中有一个错误)。 你会知道这是否会发生,因为它不会启动任何IntelliJ任务,你会等待。 相反, 打开Gradle工具窗格 ,然后单击同步(刷新)button。 这对我无效的caching和重新启动没有。

我自己的情况:我和Gradle一起使用了一个Scala项目,并且必须这样做。

另一件要检查的事项:确保依赖关系不重复。 在我的情况下,我发现一个展示这种行为的模块configuration错误如下:它依赖于另一个模块,并且依赖于其他模块生成的jar。 这意味着每个符号都重复引用,并且是不明确的。

有一个固定的已经发表? 由于2013年的“编译器大修”,原本受到v11 / 12影响的版本出现问题。截至2014年底,关于Jira的相关问题进行了讨论。http: //youtrack.jetbrains.com/issue/IDEA-98425

同样在Jira IDEA-98425被标记为固定未经validation (v12.0.3)。 以下解决方法都无法解决 Windows上的版本13.1.1的 “无法解决符号”问题

一个。 删除.IdealIC13文件夹(然后,File \ Invalidate Caches / Restart)

湾 从Maven Projects窗口,

b.1 mvn -U idea:idea – >执行这个maven目标,假设重新加载依赖关系。 这工作prev,但自上次FRI,执行这个maven目标失败,因为它试图重新编译项目(当然,它失败了,因为“无法解决的符号”,这就是我想通过运行此命令首先解决) mvn -version – 显示引用3.2.5的maven版本,并且它正在工作

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

b.3文件\使caching失效/重新启动

C。 尝试启用和禁用此设置:文件 – >设置 – > Maven – >导入 – >“使用maven3导入项目”

d。 设置\ Maven \多项目构build失败策略=结束时失败(而不是默认)

没有任何工作 对Maven的IntelliJ支持有什么感想。

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

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

IntelliJ v14 2014年11月

IntelliJ v13 DEC 2013

我认为v12是固定的(虽然未经validation )会在以后的版本中join。 任何一个与IntelliJ版本有类似的问题? 请分享你的经验。 IntelliJ的maven支持似乎打破了。

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

  1. 转到File -> Project Strucutre -> Modules
  2. 在点击有红色下划线的模块
  3. 得到“依赖”选项卡
  4. 确保依赖关系列表中实际存在红色依赖关系。 如果不是,则重命名它们以匹配现有的依赖项名称

这可能发生在IntelliJ没有正确closures,因此无法正确保存重命名的模块名称。

我只是有这个问题,它不会消失。 我最终抹掉了〜中的IntelliJ config目录,并从头开始重build我的IntelliJ项目。 (最终花费大约15分钟,而花费一个小时来解决caching文件的问题等)

编辑:请注意,我的猜测是,最初的问题是由类似的东西: http : //javathings.blogspot.com/2009/11/too-many-open-files-in-intellij-idea.html或磁盘空间/内存问题导致Java崩溃。 IntelliJ似乎只是被损坏。

上面的解决scheme都没有为我工作。 什么是手动删除main.iml文件,它突然工作。

这是上面提到的,但是这仅仅是为我解决了这个问题。 我在IntelliJ以外的所有terminal上完成所有工作。 所以caching需要为IntelliJ应用程序设置正确的权限来读取它们。

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

 $ mvn -U idea:idea 

另一个select。

当我使用JDK7_07时,我也遇到了这个问题。 我尝试了所有的答案(除了删除IDEA系统目录)。 但是,我仍然有问题。 所以我做的是:

安装最新的JDK(它是JDK7_45),并将Intellij的JDK设置为新的JDK,并且工作正常。

使我的caching无效并重新启动后; 并确认我的maven设置是好的,我仍然看到一个模块,我肯定已经设置为依赖“无法parsing符号”。 原来我把它设置到了错误的范围。

您可以通过右键单击您的模块并select打开模块设置进行检查。 单击依赖关系选项卡,并validation您的不可parsing依赖项的范围设置为编译。

重新导入项目为我工作。 右键点击Project – > Maven – > Reimport

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

是的,听起来像你必须创build包含所需JAR的库,并将它们添加为模块中的依赖项。

对于Intellij Idea用户甚至在导入项目之前的命令可能会有所帮助:

./gradlew构build/ gradlew的想法

我的项目结构:

 src -> main -> scala -> mypackages 

什么工作:

右键单击scala文件夹,然后单击“将目录标记为源根目录”。

  1. 打开“设置”
  2. search“Maven”
  3. 点击“Maven”下的“Ignored Files”
  4. 取消选中包含缺失依赖关系的pom.xml文件
  5. 点击“确定”
  6. 点击File – > Invalidate Caches / Restart …
  7. 点击“无效并重新启动”

上述解决scheme都不能解决我的问题。 我有同样的问题,代码编译得很好,但IntelliJ显示它找不到导入。 尽pipeIntelliJ从代码完成中首先build议导入。

我的解决scheme是将所有内容移动到默认包,删除com.foo.bar包,然后再次创build并将所有内容都移回。

在我的情况下,只有buildDir被删除。 在这种情况下, File | Invalidate Caches File | Invalidate Caches不起作用。

当我做Build | Make ProjectFile | Invalidate Caches之前创buildBuild | Make Project File | Invalidate Caches ,一切工作正常。

如果Maven项目,然后只是去设置 – >build立工具 – > maven – >导入。 勾选checkbox“自动导入maven项目”。 将解决问题。

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

所以我试了( Intellij ):

1 – 菜单栏 – 重构| 构build | 运行| 工具 – 单击生成然后重build项目

2 – MVN清洁

3 – 右键单击​​项目> Maven>生成源和更新文件夹

希望这对你有用。

谢谢

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

在我的情况下,这个问题出现后,我检查了我的maven项目中的文件大调整。 在退房时,我有一些自己没有检查的变化仍然活跃。 据我所知,这些更改并不是要重构的文件中的任何一个。

无效的caching和重新启动没有为我工作。 什么工作是:

  • 恢复了我在大型重组结算前所做的改变
  • 重新导入所有的Maven模块

build议的解决scheme不起作用。 我不得不通过右键单击pom => maven => unignore项目来取消pipe理多个项目。

之后,

 mvn clean install -T 6 -DskipTests 

在控制台中,IntelliJ又开心了。 不知道项目如何被忽略…

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

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

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

解决scheme:我从一个新的干净的IDEAconfiguration文件开始,通过从%APPDATA% – 文件夹中删除文件夹

这解决了我的问题:右键单击AS文件树中的jar文件,并select“添加为库…”

编辑:你可以做“文件” – >“失效caching…”,并select“失效和重新启动”选项来解决这个问题。

对于2017.1 + Gradle创意来说,这个插件有点儿怪异。 尝试所有同步,无效+重新启动,没有任何工作。 根据https://github.com/gradle/gradle/issues/2315 ,这工作对我来说:1.closures的想法2.在命令行中键入gradle的想法(应产生3个文件:.iml,.ipr,.iws) 3.运行idea并打开创build的文件.ipr,这应该从头开始导入你的项目,在这3个文件中有硬连接的依赖关系

mvn idea:idea为我工作。 在这里find它。 花了一个多小时,希望它可以帮助别人

如果什么都没有解决,右键单击你的源代码目录,将目录标记为“源代码目录”,然后右键单击项目目录和maven – >重新导入。

这解决了我的问题。