2008-11-28 35 views
10

因此,我從一個從eclipse正確構建和調試的Web服務項目(只是一個動態Web項目)開始。我們已經將一大堆我們想要放入共享庫的公共代碼拉出來,所以現在這些類將進入Web項目引用的單獨的jar項目。Eclipse調試時類路徑問題:如何將依賴項目的輸出包含到Web項目的運行時類路徑中?

在web項目上,我做了Project-> Properties-> Java Build Path-> Projects-> Add並添加了jar項目。這正確地解決了所有編譯時類路徑問題,一切都很好。但是在運行時,當tomcat服務器啓動時,spring會嘗試注入jar文件中包含的一些類,並且得到一個NoClassDefFoundError。

我的.class文件和屬性文件以及META-INF目錄的內容都顯示在./build目錄中,但是我的WEB-INF/lib目錄似乎是就地引用的,並且jar依賴項不會不會被複制到它以顯示爲Web應用程序庫的一部分。

告訴eclipse其他jar項目需要在運行時可用於tomcat的神奇咒語是什麼?從我們的ant構建腳本中,我們首先將其他項目構建到WEB-INF/lib中,一切正常,但不能用於eclipse調試。

回答

9

Java EE模塊依賴關係可以解決這個問題。 你已經完成了將你的公共類提取到它自己的項目中的任務,可能,因爲其他項目依賴於這些類。無論哪種方式,您都必須確保這是一個實用程序項目(出現在項目嚮導中的Java EE下),而不僅僅是一個普通的Java項目。 完成之後,您可以按照您的想法繼續將實用工程項目添加到構建路徑(編譯時路徑)。

附加(最後)步驟是在Dynamic Web項目和共享庫之間建立Java EE模塊依賴關係,這會導致在部署期間將實用程序的類放在WEB-INF \ lib中,甚至在導出戰爭。爲此,請訪問動態Web項目的屬性,然後瀏覽到Java EE模塊依賴關係。確保你的公用事業項目在這裏被選中。重新部署/發佈你的應用程序,你應該很好。

+0

這似乎已經成功了,但我不確定你對它是一個「實用工程」項目所說的話。有什麼我可以在我的.project文件或.settings /中看到,讓我知道這是正確的類型? – 2008-11-28 22:12:25

+0

實用程序項目是Java項目,儘管它們更適合J2EE環境。它們表示您的代碼(不是第三方JAR),它們在企業應用程序中的多個項目之間共享。通常這些是跨多個EJB使用的類,通常是單個Web模塊。 – 2008-11-28 22:25:59

10

我花了一些時間後就明白了這一點。如果您在Eclipse Helios中,請轉至properties > deployment assembly > add > project並選擇您要添加的相關項目。

相關問題