0

我試圖搜索網絡我面臨的問題,但也許我不是問谷歌正確的問題,所以我在這裏。如何解決IntelliJ IDEA中Java文件的依賴性衝突?

我正在爲我的多模塊項目使用IntelliJ IDEA。對於我的模塊之一,類文件之一是使用靜態導入 -

import static javax.ws.rs.core.Response.Status.Family.familyOf; 

作爲一個大項目,也有很多內部回購,但由於某些原因的IntelliJ拒絕使用依賴「下載的相關性javax.ws.rs-api-2.0「,而是使用」jersey-core-1.8「。正因爲如此,它拋出一個編譯錯誤,說找不到符號「familyof」。

我從兩個依賴關係中查看Response.java,發現澤西依賴關係沒有familyof方法,而javax.ws.rs-api-2.0擁有它,但IntelliJ不使用此依賴關係。我該如何解決這個問題。我的團隊中大多數開發人員都在使用Eclipse,他們沒有這個問題。我正在嘗試習慣IntelliJ IDE,但似乎找不到解決辦法。任何在這方面的幫助,非常感謝。

PS - 在Eclipse IDE中不會發生此問題。

+1

你和你的隊友應該使用maven和一個POM。在這種情況下,您的依賴關係將自動爲您管理,並且不會出現這種情況。如果您使用ide來管理依賴關係,那麼您必須使用gui來移除javax.ws.rs-api依賴關係,並添加對澤西核心的依賴關係。 –

+0

我們使用maven和一個POM。代碼庫託管在公司的內部github回購,所以我想知道爲什麼它會適用於其他人,而不是我。我敢打賭,我錯過了一些我無法弄清楚的智能設置。如果有人在使用Eclipse,但他們沒有看到這個問題,爲什麼當我使用IntelliJ時會發生這種情況? – user139386

回答

1

我可以按照以下提到的步驟解決這個問題 -

  1. 轉到「開放模塊設置」命令+向下箭頭鍵
  2. 選擇依存關係選項卡
  3. 搜索在上述兩個依賴列表
  4. 移動「javax.ws.rs-api-2.0」依賴項以確保此依賴關係高於「jersey-core-1.8」依賴關係。

我不認爲這是一個永久的解決方案,但它似乎工作。如果有深入Java/Mave/IntelliJ知識的人對這個問題有一個很好的答案!

0

您可能每次都通過在pom.xml中對依賴關係進行混洗來獲得正確的結果,並確保您想要優先的依賴關係在依賴關係列表中首先聲明。是的,在pom.xml中聲明依賴關係的順序很重要!

然後,如果你們都使用相同的Maven版本,你應該有一致的結果。