2009-11-07 126 views
22

這個問題是關於Eclipse開發的,我想在Eclipse中創建一個Web應用程序,問題是我沒有將依賴關係jar添加到已部署的存檔中。Eclipse Web Project依賴關係

我創建了一個新的動態Web項目並將其鏈接到另一個Java項目。 Java項目引用了一些第三方jar(例如Spring jars),但由於發佈web項目的某些原因,我只在戰爭的lib目錄中獲得Java項目jar,而沒有Java項目依賴項(例如Spring)。

換句話說,我有依賴於項目B(Java Project)的項目A(Web項目),項目B依賴於Spring Jars。當我在網上發佈項目作爲戰爭到JBoss唯一項目B被打包成JAR(無春瓶)

我知道我可以用螞蟻做,我甚至有這樣build.xml構建整個應用程序,但我認爲日食也可以爲我執行包裝任務。

我將Java項目添加到Web項目中的Java EE模塊依賴關係。

我應該在Java項目構建路徑屬性中使用導出選項嗎?我是否也應該將Java項目的依賴關係添加到Web項目中?

我在做什麼錯?

編輯:我使用Eclipse 3.5.1

+0

也可以考慮這樣一個問題:http://stackoverflow.com/questions/1691553/java-web-project-referencing-another-java-project。 – 2009-11-07 15:03:54

+1

我見過這個問題,在Java EE模塊依賴關係中添加依賴關係並不能解決我的問題 – LiorH 2009-11-07 15:06:35

+0

您可能還需要將Spring jars添加到Web項目的依賴關係列表中。它們可能不是傳遞性的。 – nitind 2014-05-10 05:38:13

回答

47
  1. 轉到Web項目屬性。
  2. 部署組件(左)。
  3. 添加>選擇項目>選擇您的lib項目>選中「將項目彙編到Web應用程序的WEB-INF/lib文件夾中」,如果未選中>完成。
  4. Java構建路徑(左)>項目選項卡>添加...>選擇您的lib項目>確定
  5. Java構建路徑(左)>排序和導出選項卡>選擇您的lib項目。
  6. 保存
  7. 現在,它的工作。
0

你應該打包的Web應用程序到之前部署它WAR文件。必須有一種方法可以告訴Eclipse您希望將哪些JAR文件放入WEB-INF/lib目錄中。如果沒有,編寫一個Ant build.xml來爲你做。

您不應該在環境或應用程序服務器中修改任何類路徑變量。正確的方法是創建一個適當的WAR文件。

更新:我重讀你的問題:

但由於某些原因,發佈網頁項目時,我得到的只是在JBoss中的lib目錄Java項目罐子,沒有它的依賴JAR(egSpring) 。

這是什麼意思?你不應該把任何東西放在JBOSS/lib目錄中。 WAR文件的重點在於它是一個包含所有依賴關係的自包含工件。如果你想寫東西到JBOSS/lib目錄下,你就錯了。

WAR文件需要進入您設置的域。無需更改應用程序服務器。

+0

我有一個很好的ant腳本,問題在於開發時間,我想從eclipse打包併發布它(然後調試應用程序) – LiorH 2009-11-07 15:08:32

+0

Eclipse應該可以在沒有Ant的情況下完成它。如果它不能,請獲得一個真正的IDE並下載IntelliJ。它精美地管理所有這些東西。 – duffymo 2009-11-07 15:13:36

+0

你的更新是正確的,我的意思是war文件的lib目錄(在WEB-INF下),當然不是JBoss lib目錄。我修復了問題描述,謝謝。 – LiorH 2009-11-07 15:39:01

0

如果我理解正確,你的問題是,如果你使用一個項目而這又依賴於B項目你沒有得到從項目B,而只有A的文物

的問題是,你的項目必須列出它在屬性 - > Java EE模塊依賴關係中所需的所有東西,這是與通常的項目導出不同的機制。你可能需要做一些實驗。

2

我將Java項目添加到Web項目中的Java EE模塊依賴關係。

如果目的就是要把依賴(閱讀:JAR文件/項目/等等)其他項目進入當前項目的運行時類路徑,那麼只有這樣行不通。您需要將其他項目配置爲export其依賴關係。它由構建路徑屬性中的Order和Export選項卡完成。希望這可以幫助。

2

還要注意Eclipse WTP上報告的這個錯誤,即使您正確配置了所有內容,它也會阻止將依賴項部署到WEB-INF/lib中。嘆。

Bug 312897 - Deployment feature doesn't deploy classpath dependencies.

據我瞭解,用在編譯時JAR在Eclipse,並確保它也可以在運行時在應用程序服務器,您可以:

  • 添加JAR到您的構建路徑
  • 標記JAR作爲出口EE模塊依賴

如果你需要的是由你使用的是其他項目所需要的JAR的,我將親自將它們列爲構建路徑中的顯式依賴項,並將其添加到導出的模塊依賴項中。

但是,不要把我按面值的答案,我偶然發現了這個職位,同時尋找我得到我的Eclipse項目NoClassDefFound錯誤的原因...;)

4

我知道這是在四年前,最後的職位,也許這個選項不可用,但今天,這裏是爲我工作:

  1. 進入Web項目 - >屬性
  2. 部署大會
  3. 使用「添加」按鈕,添加你的項目依賴
  4. 轉到項目 - >作爲項目你根據
  5. 屬性
  6. 使用「添加」按鈕添加項目的運行時庫依賴關係
  7. Web Project-> Run As .. - >在服務器上運行,它爲我工作

被警告,步驟4-6將意味着如果你使用eclipse來建立你的jar文件,它現在將包括你的依賴庫在該jar。

感謝rodgarcialima幫助我獲得第3步。

+0

嗨喬治,是否有任何其他方式來使被引用的項目庫複製到Web項目? – 2014-06-22 22:29:23

+0

如何建立戰爭檔案並需要其他項目包括? – Niamath 2016-11-01 15:50:44