命令行 mvn 编译,但不是 IntelliJ

问题描述 投票:0回答:9

我在 IntelliJ 中编译 Maven 项目时遇到问题。

  • 如果我从命令行运行
    mvn clean install
    =成功
  • 如果我单击 IntellJ 中的“重新导入所有 Maven 项目”图标 = 成功
  • 如果我单击 IntelliJ 中的“为所有项目生成源并更新文件夹”图标 = 成功
  • 如果我单击 Maven 项目面板中的“安装”生命周期 = 成功
  • Maven“安装”后,我什至可以毫无问题地运行应用程序,并且可以看到最新的源代码更改。

因此我不认为这个项目本身有什么问题。但是

  • IntelliJ 显示缺少很多方法和字段(红色突出显示)
  • 制作模块...失败
  • 编译模块...失败
  • 从 IntelliJ 运行的所有单元测试都会失败,并出现“java:找不到符号”错误,但从命令行通过

我有

  • 重启IDE几次
  • 单击文件 -> 使缓存无效/重新启动...
  • 单击文件 -> 项目结构... -> 问题 = 空面板(我认为这意味着没有问题)
  • 点击文件 -> 设置... -> Maven = Maven 设置正确

我还能尝试什么让 IntelliJ 足够智能来编译项目?

java maven intellij-idea dependencies
9个回答
12
投票

如果命令行使用与 IntelliJ 不同版本的 mvn,则可能会发生这种情况。 确保 Intellij 使用与命令行使用的相同的 Maven 可执行文件。第一种类型:“which mvn” 找出命令行正在使用的 mvn 可执行文件。然后通过以下方式让 IntelliJ 使用相同的版本:Intellij => Preferences => Build, Execution and Deployment => Build Tools => Maven => Maven Home Directory。 IntelliJ 2017.1 中的 Mvn 设置


6
投票

刚刚遇到这个问题。对我有用的是关闭项目并删除 .idea 文件夹。

重新打开项目,然后再次将其设置为maven项目...

之后一切都好。


2
投票

检查项目的 JDK 设置。 根据我的经验,这是奇怪的 Intellij 无法编译问题的最常见原因。

在“项目设置”(CMD-,) 下 - 查看“项目 SDK”设置。

确保它是有效的 SDK,并且版本与源所需的版本匹配(即检查 Maven 编译器插件源/目标设置,并确保所选的 SDK 至少是该版本或更高版本)。


1
投票

几年后,我在另一个项目中再次遇到同样的问题。 在这种情况下,IntelliJ 缺少生成丢失源的 Lombok 插件。

安装:

  1. 转到:文件 -> 设置 -> 插件
  2. 在搜索栏中输入“Lombok”
  3. 单击 Lombok 旁边的“安装”
  4. 重新启动 IntelliJ

1
投票

我遇到了类似的问题。 解决方案是将 IntelliJ maven 主目录设置为已安装的 maven 位置。 转到文件->设置 然后设置maven主目录如图所示:

enter image description here


0
投票

我在生成源代码时遇到了这个问题。 Maven 没有设置将已编译的测试源文件夹标记为测试源根目录,因此每次我使用 Maven 执行某些操作时,我都必须标记生成的文件夹。


0
投票

我在从 IntelliJ Maven 编译到 Java 11 时遇到了类似的问题,表明

com.sun.management.HotSpotDiagnosticMXBean#dumpHeap()
不存在。

尝试了上述步骤后,我仍然无法解决问题。我最近迁移到了 Ubuntu 的新实例,并决定启动我的旧虚拟机,其中代码编译没有问题。所以我想到,当我在新虚拟机上安装 IntelliJ 时,我选择通过 IntelliJ SDK 下载功能下载 AdoptOpenJDK 11 (adopt-openj9-11.0.7)。

所以我手动下载并安装了一份新的 OpenJDK 11 (jdk-11.0.6+10),然后将项目的默认 SDK 更改为我安装的新版本,一切都编译得很好。

我希望这个答案可以帮助其他人。


0
投票

这个问题已经困扰很长时间了,通常其根本原因是如上所述在IntelliJ上运行的maven版本不同,但有时也可能是由于项目结构中选择的Java版本不同引起的。

对我来说,即使在对齐maven版本后,问题也不会消失,但是一旦我检查了java版本,Intellij默认为我选择了Java 11,一旦我将其改回Java 8,它又开始工作了。


0
投票

围绕这个看起来非常明显的问题,我遇到了很多问题。

总而言之,问题是 pom.xml 定义

<java.version>21</java.version>

我使用的是 IntelliJ Idea 2021 版本。

在此版本的 IntelliJ 上,问题已通过在设置 -> 构建、执行、开发 -> Maven -> Maven Home Path -> Bundled Maven 3 中使用

Bundled Maven 3
解决了

但是后来我遇到了与 Java 21 使用相关的其他问题,例如

release version 21 not supported
java: No enum constant javax.lang.model.element.Modifier.SEALED

最终不得不使用最新的 IntelliJ IDE 2024.2.4,这解决了问题。

© www.soinside.com 2019 - 2024. All rights reserved.