IDEA JetBrains IntelliJ - 在'make'上编译错误,但在使用Maven编译时没有错误,IntelliJ在类文件中没有报告错误

时间:2010-09-09 13:49:57

标签: java maven-2 intellij-idea compilation

所以我在IntelliJ中有一个maven模块(模块-A)。我最近将一些类从它移动到另一个新的maven模块(模块-B)并添加了一个依赖项。一旦我完成了这个,我还修改了一个移动类的方法的签名(现在在模块B中)。

我重新导入了poms,以便IntelliJ获取依赖项更改并确保受影响文件的所有Java导入再次正确。现在,当我尝试运行我的webapp(取决于两个模块)时,我在module-A的类中得到一个编译错误,调用模块-B中类的修改方法。

错误消息基本上是说该方法不存在但认为旧方法仍然存在!我点击'make'错误,它将我带到模块A中的一个类中,调用修改后的方法...奇怪的是,IntelliJ知道它在文件中很好。即该方法没有用红色加下划线,就像编译错误一样,但类文件名是:(

我使用'mvn install'从命令行编译它(已经安装了模块-B)并且它都是成功的。我已经删除了模块A和模块B的目标中的classes目录,并且还使IntelliJ的缓存无效并重新启动......仍在发生......任何想法?

22 个答案:

答案 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)

以下步骤应解决此问题:

  1. 删除 .IntelliJIdea12 / .IdeaIC12旧版c:/ user /.../
  2. 使智能缓存无效:文件>无效缓存
    这会在启动时重新为您的工作区编制索引,并清除您的本地历史记录。在执行此操作之前,提交或备份所有未提交的更改。
  3. 在建立索引后恢复工作区后,请执行 maven clean install
  4. 构建成功后,点击 Maven重新导入
  5. 这对我有用,我认为它也适用于其他类似问题。

答案 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”

最后摆脱了基于.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)

修复是我把它变成了javac而不是Ajc,当然我根据你的jdk版本加了1.8。

由于某种原因,当我无效并重新启动intellij时,它被设置为默认值!

after i fixed i made it javac instead of Ajc

我的版本是

enter image description here

答案 17 :(得分:0)

这件事发生在我身上......是什么原因导致他们意识到源目录中有一个额外的main.iml文件。删除它会立即使编译错误消失。

答案 18 :(得分:0)

以上所有答案对我都没有作用。

对于我来说,我最终必须为模块创建一个明确的Maven运行配置(将命令行作为“全新安装”),然后运行它。

它在Run > Edit Configurations

答案 19 :(得分:0)

  1. 关闭项目
  2. 转到项目文件夹并删除想法项目文件和.iws文件
  3. 运行mvn idea:idea
  4. 重新启动项目。

似乎想法是即使我们运行文件->使缓存无效,也要保持旧项目的依赖关系而无需清理

答案 20 :(得分:0)

设置合适的 Java SDK 可以解决问题

  • 右键单击项目并选择“打开模块设置”
  • 在平台设置下检查您是否拥有正确的 Java SDK enter image description here
  • 查看 Modules 下的 SDK enter image description here
  • 从“构建”菜单重建项目

答案 21 :(得分:0)

删除安装目录。

删除以下目录:

<块引用>

~/.config/JetBrains/

~/.cache/JetBrains/

~/.local/share/JetBrains/

这将删除每个配置以及安装 jetbrains 工具,无论是 IDEA、goland 等。 现在从头开始安装所有东西。 这是对我有用的唯一方法