2011-08-18 99 views
7

我剛剛從Helios切換到Eclipse Indigo,並且在嘗試運行帶有WTP的Tomcat 6上啓用Maven的Web項目時遇到了一些麻煩。Eclipse 3.7/Indigo m2e WTP集成依賴問題

我遇到了Tomcat沒有看到Maven依賴關係的經典問題。在Helios中,解決方法是通過以下方式將Maven依賴項添加到部署程序集: 項目屬性 - >部署程序集 - >添加'Java Build Path Entries' - > Maven Dependencies

不幸的是,'Java Build Path條目'沒有被列出,只有'文件夾'和'項目'。我不確定這是故意的,還是我的設置有問題。

在試圖除去外部因素的影響,我使用以下設置:

  • 新鮮安裝的Eclipse靛藍(蘋果機)
  • 新鮮工作區
  • M2E WTP集成通過Eclipse賣場
  • 安裝
  • 創建新的Maven項目
  • 添加一些maven依賴關係,加上一些代碼來使用它們
  • C onvert項目刻面的形式
  • 添加 '動態Web模塊' 小
  • 的Maven>更新項目配置
  • 添加到Tomcat 6服務器
  • 在服務器

運行在這一點上,我見獲取有關我缺少的依賴關係的ClassNotFoundException。 如果我運行'mvn war:war'並在項目的部署程序集中包含組裝好的'WEB-INF/lib'目錄,那麼當然依賴關係會被正確拾取 - 對於快速修復很不錯,但並不理想。

我讀過的有關類似問題的大多數問題都歸結爲缺少WTP集成模塊,但這對我來說並不是問題。

我做錯了什麼?

+0

「新maven項目」的包裝類型是jar還是war? – Raghuram

+0

包裝是JAR - 我已經更換爲WAR,服務器現在正確部署!發佈這個答案,以便我可以將其標記爲正確 - 謝謝。 – sebrichards

+0

發表評論爲答覆。 – Raghuram

回答

3

它看起來像new maven project的包裝類型是jar。如果是這樣,您可以將其更改爲war並嘗試。

1

這裏討論的是另一種解決方案: 固定。類路徑文件

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> 
      <attributes> 
-     <attribute name="org.eclipse.jst.component.nondependency" value=""/> 
+     <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> 
      </attributes> 
    </classpathentry> 
1

右鍵單擊項目

  1. 選擇部署總成>單擊添加

  2. 選擇從彈出的窗口Java構建路徑項,然後單擊下一步

  3. 可以使用Ctrl鍵鼠標選擇全部顯示lib

之後,您將看到.classpath文件中的更改。

在服務器選項卡中再次發佈您的項目。

+1

每次運行Maven更新時,這些設置都會丟失。 m2e插件會覆蓋這些設置,因此與處理啓用Maven的Web應用程序時相比,它們幾乎沒有用處。 –