2011-05-21 45 views
56

我有這個奇怪的問題,使得我的項目基於Maven。我在Eclipse中創建了一個新的Maven項目並啓用了Dynamic Web構面。但是在運行時現在它會拋出ClassNotFoundException,因爲Maven依賴不會被複制到WEB-INF/lib目錄中。我甚至嘗試在POM中添加複製依賴關係部分,但它沒有幫助。在WEB-INF/lib中不可見的Maven依賴關係

有人here似乎已經解決了這個正確的方式,但我猜他忘了提解決方案::(

+1

嘗試最新的m2eclipse插件。我認爲它有兩個部分,它幫助我在eclipse類路徑上獲得Maven依賴關係。 – xecaps12 2011-05-21 18:08:49

+0

我沒有得到它......兩部分? – 2011-05-21 18:15:20

+0

爲了讓maven play與wtp很好,我必須安裝核心和從這裏額外的:http://m2eclipse.sonatype.org/installing-m2eclipse.html – xecaps12 2011-05-22 02:01:26

回答

143

這應該什麼都沒有做,用eclipse和m2eclipse的,和可選的更好的支持 - m2e-wtp。此外,你不需要複製依賴。這裏有幾個可能的原因:

  • 你應該調用mvn package(或右鍵點擊>的Maven>包),並獲得戰爭的文件 - 在<packaging>(在POM)必須war
  • 你的依賴應該是與默認範圍(如果他們是providedtest他們將不會包含在檔案中)
  • 如果您在eclipse中的服務器上運行該項目作爲動態Web項目,那麼您應該打開項目屬性(右鍵單擊>屬性)並選擇「部署程序集」。點擊「添加」,選擇「構建路徑條目」,然後選擇「Maven依賴關係」。這將指示WTP將Maven依賴關係發送到服務器目錄。
+0

如果和你只有當我可以upvote你兩次人......我看了很多地方和博客,甚至一些SO問題....所有這些誤導......浪費大約6小時直接爲此...感謝的人 – 2011-05-21 19:07:54

+0

哪三個呢? :) – Bozho 2011-05-21 19:10:32

+29

第三個剛剛使我的日子 – 2011-05-21 19:13:44

3

檢查項目的部署大會財產我已經看到了一些mvn eclipse:eclipse產生Eclipse項目有時資產被部署到錯誤的位置。從我能記住新部署大會有一些問題與早期版本的Eclipse 3.6(太陽神)的。

12

首先安裝Maven的整合對於Eclipse WTP(幫助 - > Eclipse的市場)

在Web項目的pom.xml

然後只需添加:

<packaging>war</packaging> 

之後恰到好處點擊項目,Maven - > Update Project,它應該在部署程序集中爲你自動添加Maven Dependencies。

+0

謝謝你的評論。你節省了我的調試時間。 – DigitalGhost 2012-12-31 07:42:01

+1

+1這也適用於我。如果沒有它,Maven會將依賴項打包爲一個jar文件,而您不希望這樣做,您希望將所有依賴項打包成一個war類型的文件。這有很多其他的影響,閱讀更多https://maven.apache.org/pom.html – 2015-04-13 21:56:03

+0

maven - >更新項目也爲我工作。在Eclipse Luna版本中似乎是必需的 – kandan 2016-04-20 22:21:48

2

我只是做了maven - >更新項目爲我工作。

5

右擊項目>的Maven>更新Maven項目>確定固定對我來說

0

如果你看看你的部署,並看到WEB-INF/lib下是空的Maven的依賴關係,然後確保這些Maven依賴在你選擇的答案中提到的部署組件至關重要。

但是要小心Eclipse,然後即使使用Maven更新也不會刷新所有內容。如果您清理,重建和重新部署,但仍未看到正在填充的lib文件夾,請嘗試通過服務器>添加和刪除來刪除應用程序並重新添加到服務器部署。

這爲我打開了系統。

0

右鍵單擊項目 - >部署程序集: 查看您是否擁有Maven Dependencies以及其中的所有其他人。 如果沒有, 右鍵單擊項目 - >的Maven - >啓用工作空間分辨率

(也許那時的Maven - >更新項目,但再看看「部署大會」,看看你有) 此爲我解決了它(終於!)。