所以我在IntelliJ中有一个maven模块(模块-A)。我最近将一些类从它移动到另一个新的maven模块(模块-B)并添加了一个依赖项。一旦我完成了这个,我还修改了一个移动类的方法的签名(现在在模块B中)。
我重新导入了poms,以便IntelliJ获取依赖项更改并确保受影响文件的所有Java导入再次正确。现在,当我尝试运行我的webapp(取决于两个模块)时,我在module-A的类中得到一个编译错误,调用模块-B中类的修改方法。
错误消息基本上是说该方法不存在但认为旧方法仍然存在!我点击'make'错误,它将我带到模块A中的一个类中,调用修改后的方法...奇怪的是,IntelliJ知道它在文件中很好。即该方法没有用红色加下划线,就像编译错误一样,但类文件名是:(
我使用'mvn install'从命令行编译它(已经安装了模块-B)并且它都是成功的。我已经删除了模块A和模块B的目标中的classes目录,并且还使IntelliJ的缓存无效并重新启动......仍在发生......任何想法?
答案 0 :(得分:39)
我发现这可能会有所帮助:
档案 - >无效缓存
答案 1 :(得分:21)
Maven项目 - >重新进口应该有所帮助。
答案 2 :(得分:15)
我在同一个问题上花了几个小时。世界上所有的清洁都没有帮助。
我在项目中删除了我的out和target目录并重新编译 - 清除了它。
编辑:文件菜单下还有一个神奇的功能:“无效缓存/重启”这修复了一堆“intellij is confused”问题。
答案 3 :(得分:7)
更改IDEA中的“Java编译器”设置(用户编译器javac进程中)以解决问题。
答案 4 :(得分:6)
尝试mvn clean
您的项目和mvn install
您的项目B。
当您使用Intellij直接提供的make命令时,maven与intelliJ的集成是一种错误。您应该直接使用mvn命令,或者从maven面板启动它们。
答案 5 :(得分:4)
我遇到了一个非常类似的问题,这让我疯了。
我的代码可以使用我正常运行的ant任务编译好,但它不会在IntelliJ中构建,抱怨“找不到符号等等”
事实证明,您可以为编译器添加“Excluded”文件。我的文件以某种方式被添加到该列表中。
此列表位于文件>设置>编译器>排除(IntelliJ 13)
答案 6 :(得分:3)
以下步骤应解决此问题:
这对我有用,我认为它也适用于其他类似问题。
答案 7 :(得分:2)
所以今天早上就说出来了,一切正常!
昨晚我所做的是从模块A和模块B的父pom打开一个新项目(intelliJ项目)并成功建立它,可能这样做然后打开我的原始项目再次以某种方式修复它.. 。非常讨厌
答案 8 :(得分:2)
我看到的行为类似于原作者描述的行为。 错误标记显示在Intellij 14中编辑器的右侧,而在13中显示较少。
如果使用Scala而不是Java并使用SBT而不是Maven,也会发生这种情况。
还注意到在加载第二个项目后会发生这种情况。第一个总是好的。 (经过多次试验和错误)认为它可能是由Intellij的内部缓存变得有点腐败造成的。 “无效缓存”在某个时候有效,有时却没有。
我使用Play工作了很多项目!框架和他们使用不同版本的Scala和许多依赖项。 我假设缓存变得腐败,因为Intellij使用的内部键不足以处理在不同的jar中多次加载的同一个类具有不同签名的情况,这会导致编辑器错误,而外部版本工作正常。
然后“在IntelliJ IDEA中更改sbt项目的常春藤缓存位置?” post给出了隔离常春藤缓存SBT和Intellij使用的想法,希望常春藤路径是内部缓存密钥的一部分。
TypeSafe的Paul Phillips提供了“SBT extras”工具,在这里我找到了一种方法来指示SBT使用基于项目的常春藤家庭,缓存和SBT启动:
https://raw.githubusercontent.com/paulp/sbt-extras/master/sbt
declare -r noshare_opts =“ - Dsbt.global.base = project / .sbtboot -Dsbt.boot.directory = project / .boot -Dsbt.ivy.home = project / .ivy”
如何配置Intellij :见http://content.screencast.com/users/SemanticBeeng/folders/Snagit/media/ec8ec491-6d0c-4691-9598-916a63ba65ef/12.02.2014-08.59.png
然后为外部SBT构建做同样的工作 :见http://content.screencast.com/users/SemanticBeeng/folders/Snagit/media/dcb287c4-200f-47f3-a937-42865675a22b/12.02.2014-09.01.png
最后摆脱了基于.ivy2的用户家和所有内容。 为了确保Intellij不使用此文件夹,我将其设为readonly。 这是一个错误。如果你这样做,Intellij似乎默默无法解决依赖关系。
这解决了错误并相信他们不会回来。 : - )
如果Intellij的人听到这个:请使用TypeSafe的所有Play Framework模板测试您的版本(Scala,SBT,编辑器)。这种问题很快就会显现出来。
答案 9 :(得分:1)
我刚才有一个类似的问题让我疯了。我已经完成了上面答案中提到的所有其他事情,因为我已经永远使用了Intellij,但没有一个工作。最后我发现在Intellij的maven项目部分,我的一个模块被标记为“忽略”一个简单的unignore命令从上下文菜单中就可以了。
答案 10 :(得分:1)
在我的情况下,我手动将目录标记为“Test Sources Root”,但IDEA在父Maven项目上标记了它。在文件中取消标记 - >项目结构......->模块解决了问题。
答案 11 :(得分:1)
如果您在IntelljJ外部构建时使用不同版本的Java,则可能会发生这种情况。我的IntelliJ有java10,我在终端建设时使用java8。将java版本更改为IntelliJ为我解决了这个问题。
答案 12 :(得分:0)
我从12升级到13后,今天遇到了这个问题。
后来我修复了问题,因为我使用了Project和Module的相同名称,看起来Intellij允许这样做,但是无法正确处理它。
不知道为什么设置会影响编译,尽管java编辑器中没有错误。应该是版本13中的错误。
答案 13 :(得分:0)
从IntelliJ 12升级到13后,我遇到了类似的问题。经过多次卸载和重新安装(多个intelliJ版本),大量清理和.m2存储库清理后,我终于弄明白了我的问题。
在我的intelliJ设置中,我的主POM文件中提到的存储库无法连接到。这又是由于我的pom文件中提到的应付和备用存储库。 一旦POM指向正确的存储库,我的所有类都解决了编译问题。
要检查您的存储库是否已连接到,请转到文件 - >设置 - > Maven - >存储库
此处,您的索引maven存储库应成功连接。如果不是,那么intelliJ将无法解决大多数第三方和模块的依赖关系。
答案 14 :(得分:0)
我的行为非常相似。由于“make”步骤中不相关的java类中的错误,运行(Scala-)测试总是会失败。
事实证明,我已经包含了一个“全局”SDK库,该库与项目中的一个依赖项发生冲突。在我从测试中删除“make”步骤后,才会显示正确的有用错误消息。 然后我删除了重复的库,重新添加了make步骤进行测试,现在一切正常。
答案 15 :(得分:0)
我很尴尬地说,但我们也有这个问题,但这是由于我们的包名错误。
在为新项目创建包时,我不小心创建了一个名为“org.package”的包。
我的项目有一个目录结构,如:
/src/main/java/org.package /
这对IntilliJ造成了各种各样的破坏。
在文件系统上创建了正确的文件夹结构后,IntelliJ运行良好。
/ SRC /主/ JAVA /组织/包/
注意/org.package/ vs / org / package /
的区别答案 16 :(得分:0)
答案 17 :(得分:0)
这件事发生在我身上......是什么原因导致他们意识到源目录中有一个额外的main.iml文件。删除它会立即使编译错误消失。
答案 18 :(得分:0)
以上所有答案对我都没有作用。
对于我来说,我最终必须为模块创建一个明确的Maven运行配置(将命令行作为“全新安装”),然后运行它。
它在Run > Edit Configurations
答案 19 :(得分:0)
似乎想法是即使我们运行文件->使缓存无效,也要保持旧项目的依赖关系而无需清理
答案 20 :(得分:0)
答案 21 :(得分:0)
删除安装目录。
删除以下目录:
<块引用>~/.config/JetBrains/
~/.cache/JetBrains/
~/.local/share/JetBrains/
这将删除每个配置以及安装 jetbrains 工具,无论是 IDEA、goland 等。 现在从头开始安装所有东西。 这是对我有用的唯一方法