簡體   English   中英

命令行 mvn compile,但不是 IntelliJ

[英]Command line mvn compile, but not IntelliJ

我在 IntelliJ 中編譯 Maven 項目時遇到問題。

  • 如果我從命令行運行mvn clean install = SUCCESS
  • 如果我單擊 IntellJ = SUCCESS 中的“重新導入所有 Maven 項目”圖標
  • 如果我單擊 IntelliJ 中的“為所有項目生成源和更新文件夾”圖標 = 成功
  • 如果我點擊 Maven 項目面板中的“安裝”生命周期 = 成功
  • 在 Maven“安裝”之后,我什至可以毫無問題地運行應用程序,並且可以看到我最新的源代碼更改。

因此,我認為項目本身沒有任何問題。 但是

  • IntelliJ 顯示缺少許多方法和字段(紅色突出顯示)
  • 制作模塊...失敗
  • 編譯模塊...失敗
  • 從 IntelliJ 運行的所有單元測試都失敗並顯示“java:找不到符號”錯誤,但從命令行通過

我有

  • 多次重啟IDE
  • 單擊文件 -> 使緩存無效/重新啟動...
  • 單擊 File -> Project Structure... -> Problems = Empty 面板(我認為這意味着沒有問題)
  • 單擊文件 -> 設置... -> Maven = Maven 設置正確

我還可以嘗試使 IntelliJ 足夠智能以編譯項目嗎?

如果命令行使用不同於 IntelliJ 的 mvn 版本,就會發生這種情況。 確保 Intellij 使用與命令行使用的相同的 Maven 可執行文件。 第一種類型:“which mvn”以找出命令行正在使用的 mvn 可執行文件。 然后讓 IntelliJ 使用相同的版本:Intellij => Preferences => Build, Execution and Deployment => Build Tools => Maven => Maven Home Directory。 IntelliJ 2017.1 中的 Mvn 設置

剛遇到這個問題。 對我有用的是關閉項目並刪除 .idea 文件夾。

重新打開項目,然后再次將其設置為 Maven 項目...

之后一切都好。

檢查項目的 JDK 設置。 根據我的經驗,這是導致 Intellij 無法編譯問題的最常見原因。

在“項目設置”(CMD-,)下 - 請參閱“項目 SDK”設置。

確保它是一個有效的 SDK,並且版本與源所需的版本匹配(即檢查 Maven 編譯器插件源/目標設置,並確保所選 SDK 至少是該版本或更高版本)。

幾年后,我再次遇到了同樣的問題,但在另一個項目中。 在這種情況下,IntelliJ 缺少生成缺失源的 Lombok 插件。

安裝:

  1. 轉到:文件 -> 設置 -> 插件
  2. 在搜索欄中輸入“Lombok”
  3. 單擊 Lombok 旁邊的“安裝”
  4. 重啟 IntelliJ

當我生成源時,我遇到了這個問題。 Maven 沒有設置為將compiled-test-sources 文件夾標記為測試源根目錄,所以每次我用Maven 做一些事情時,我都必須標記生成的文件夾。

我在從 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,一切都編譯得很好。

我希望這個答案可以幫助其他人。

我遇到了類似的問題。 解決方案是,將 IntelliJ maven 主目錄設置為安裝的 maven 位置。 轉到File->Settings然后設置 maven 主目錄,如圖所示:

在此處輸入圖片說明

長期以來一直面臨這個問題,通常的根本原因是如上所述在 IntelliJ 上運行的 Maven 版本不同,但有時也可能是由於在項目結構中選擇的 Java 版本不同。

至於我,即使在對齊 Maven 版本之后,問題也不會消失,但是一旦我檢查了 Java 版本,Intellij 默認為我選擇了 Java 11,一旦我將其改回 Java 8,它又開始工作了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM