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支持似乎打破了。
项目结构中不一致/重复的模块名称对我造成这个问题。
- 转到
File -> Project Strucutre -> Modules
- 在点击有红色下划线的模块
- 得到“依赖”选项卡
- 确保依赖关系列表中实际存在红色依赖关系。 如果不是,则重命名它们以匹配现有的依赖项名称
这可能发生在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
文件夹,然后单击“将目录标记为源根目录”。
- 打开“设置”
- search“Maven”
- 点击“Maven”下的“Ignored Files”
- 取消选中包含缺失依赖关系的pom.xml文件
- 点击“确定”
- 点击File – > Invalidate Caches / Restart …
- 点击“无效并重新启动”
上述解决scheme都不能解决我的问题。 我有同样的问题,代码编译得很好,但IntelliJ显示它找不到导入。 尽pipeIntelliJ从代码完成中首先build议导入。
我的解决scheme是将所有内容移动到默认包,删除com.foo.bar
包,然后再次创build并将所有内容都移回。
在我的情况下,只有buildDir被删除。 在这种情况下, File | Invalidate Caches
File | Invalidate Caches
不起作用。
当我做Build | Make Project
在File | 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 – >重新导入。
这解决了我的问题。