命令行 mvn 编译,但不是 IntelliJ
Posted
技术标签:
【中文标题】命令行 mvn 编译,但不是 IntelliJ【英文标题】:Command line mvn compile, but not IntelliJ 【发布时间】:2017-12-01 11:37:36 【问题描述】:我在 IntelliJ 中编译 Maven 项目时遇到问题。
如果我从命令行运行mvn clean install
= 成功
如果我单击 IntellJ = SUCCESS 中的“重新导入所有 Maven 项目”图标
如果我点击 IntelliJ 中的“为所有项目生成源和更新文件夹”图标 = 成功
如果我点击 Maven 项目面板中的“安装”生命周期 = SUCCESS
在“安装”Maven 之后,我什至可以毫无问题地运行应用程序,并且可以看到我最新的源代码更改。
因此,我认为项目本身没有任何问题。但是
IntelliJ 显示缺少许多方法和字段(红色突出显示) 制作模块...失败 编译模块...失败 从 IntelliJ 运行的所有单元测试都因“java:找不到符号”错误而失败,但从命令行通过我有
多次重启 IDE 单击文件 -> 使缓存无效/重新启动... 单击文件 -> 项目结构... -> 问题 = 空面板(我认为这意味着没有问题) 点击文件 -> 设置... -> Maven = Maven 设置正确我还能尝试什么让 IntelliJ 足够智能以编译项目?
【问题讨论】:
您是否尝试过删除模块并在 IntelliJ 中重新导入?这帮助了我好几次。 您可以尝试在 IntelliJ 中关闭项目,然后删除项目中的 .idea 文件夹和 *.iml 文件,然后在 IJ 中重新打开项目 我最初对删除该模块有点怀疑,但在我删除它(也物理删除所有文件,包括 iml 文件)并重新导入所有内容后,一切都乱了套,到处都是错误。在我解决了所有这些错误之后,IntelliJ 成功编译了我的项目,甚至单元测试现在也可以工作了。那么,当我遵循 Dominik 和 P.J.Meisch 的建议时,谁会得到答案呢? 见***.com/a/42427510/104891。 可能是缓存问题,尝试File | Invalidate Caches/Restart | Invalidate
并在您的Maven Projects
工具中单击Lifecycle | clean
和/或Generate Sources and Update Folders For All Projects
按钮
【参考方案1】:
我在生成源时遇到了这个问题。 Maven 没有设置将compiled-test-sources 文件夹标记为测试源根目录,所以每次我使用Maven 做某事时,我都必须标记生成的文件夹。
【讨论】:
这几天应该会发现这些。【参考方案2】:如果命令行使用的 mvn 版本与 IntelliJ 不同,就会发生这种情况。 确保 Intellij 使用的是与命令行使用的相同的 maven 可执行文件。第一种类型:“哪个 mvn” 找出命令行正在使用的 mvn 可执行文件。然后通过以下步骤使 IntelliJ 使用相同的版本:Intellij => Preferences => Build, Execution and Deployment => Build Tools => Maven => Maven Home Directory。 Mvn Settings in IntelliJ 2017.1
【讨论】:
【参考方案3】:检查项目的 JDK 设置。根据我的经验,这是导致 Intellij 无法编译的奇怪问题的最常见原因。
在“项目设置”(CMD-,) 下 - 请参阅“项目 SDK”设置。
确保它是一个有效的 SDK,并且版本与源所需的版本相匹配(即检查 maven 编译器插件源/目标设置,并确保所选的 SDK 至少是该版本,或更高版本)。
【讨论】:
【参考方案4】:刚刚遇到这个问题。对我有用的是关闭项目并删除 .idea 文件夹。
重新打开项目,然后再次将其设置为 maven 项目...
之后一切都好。
【讨论】:
【参考方案5】:几年后,我又遇到了同样的问题,但又遇到了另一个项目。在这种情况下,IntelliJ 缺少生成缺失源的 Lombok 插件。
安装:
-
转到:文件 -> 设置 -> 插件
在搜索栏中输入“龙目岛”
点击龙目岛旁边的“安装”
重启 IntelliJ
【讨论】:
【参考方案6】:我在从 IntelliJ Maven compile 编译到 Java 11 时遇到了类似的问题,表明 com.sun.management.HotSpotDiagnosticMXBean#dumpHeap()
不存在。
尝试上述步骤后,我仍然无法解决。我最近迁移到了一个新的 Ubuntu 实例,并决定启动我的旧 VM,在那里编译的代码没有问题。所以我突然想到,当我在新 VM 上安装 IntelliJ 时,我选择通过 IntelliJ SDK 下载功能下载 AdoptOpenJDK 11 (adopt-openj9-11.0.7)。
所以我手动下载并安装了 OpenJDK 11 (jdk-11.0.6+10) 的新副本,然后将项目的默认 SDK 更改为我安装的新 SDK,一切编译正常.
我希望这个答案可以帮助其他人。
【讨论】:
【参考方案7】:我遇到了类似的问题。 解决方案是,将 IntelliJ maven 主目录设置为已安装的 maven 位置。 转到文件->设置 然后如图所示设置maven主目录:
【讨论】:
【参考方案8】:这个问题困扰很久了,通常是上面提到的 IntelliJ 上运行的 maven 版本不同造成的,但有时也可能是项目结构中选择的 Java 版本不同造成的。
对于我来说,即使在调整了 maven 版本之后问题也不会出现,但是一旦我检查了 java 版本,Intellij 默认为我选择了 Java 11,一旦我将它改回 Java 8,它又开始工作了.
【讨论】:
以上是关于命令行 mvn 编译,但不是 IntelliJ的主要内容,如果未能解决你的问题,请参考以下文章