2011-03-04 57 views
4

我在Eclipse中設置了Google App Engine項目。我添加了一個根級文件夾來包含我的項目的庫。我將所有這些庫添加到我的項目的構建路徑。代碼編譯沒有任何錯誤。當我運行該項目時,我得到啓動錯誤NoClassDef錯誤。當我手動將這些庫添加到war目錄的lib文件夾時,這些錯誤消失。未被Eclipse部署的引用庫

爲什麼Eclipse不在我的構建路徑上爲我部署庫?我是否需要爲Eclipse運行一個構建腳本?一個將我的庫複製到war目錄的lib文件夾的構建腳本?

+0

Google App Engine是否使用Eclipse WTP工具進行Web項目支持,還是推出自己的解決方案?如果它是WTP,那麼有一種簡單的方法可以獲得打包在WAR中的任意構建路徑條目,而無需將jar放入WEB-INF/lib中。讓我知道,我會記錄。 – 2011-03-04 22:27:34

回答

3

對於標準Java EE項目庫必須在{web-app}/WEB-INF/lib文件夾下。 GAE要求他們也要使用代碼上傳到引擎。

或者你可以使用Maven來定義你的依賴,並部署到GAE

UPDATE:GAE項目遵循標準的Java EE項目結構來構建和部署war文件。約定是你的lib文件夾在{web-app}/WEB-INF/lib中。谷歌插件自動(從插件文檔爲例)產生這樣的結構:

​​

的插件確實允許爲您的「戰爭」目錄更改位置,但您的庫沒有位置,因爲它應該遵循Java EE標準。

+0

GAE有文檔說明這些庫必須在{web-app}/lib下? – stevebot 2011-03-04 20:20:55

+0

我不這麼認爲,但Google Eclipse插件期望它們在那裏。請參閱更新 – 2011-03-04 21:21:18

2

您可以直接將庫添加到war/lib中,然後右鍵單擊庫將其添加到構建路徑中。

不知道爲什麼它不在構建路徑上部署庫,但我一直在使用Eclipse多年,並一直按照我所描述的方式完成它。然後我通過eclipse進行部署,不使用構建腳本。

+2

當然,但爲什麼Eclipse不會將它們添加到該目錄對我? – stevebot 2011-03-04 20:19:49

2

如果沒有添加到lib文件夾庫在同一個工作區正在開發中,我會建議啓用「應用模塊」,在庫項目的項目屬性方面。有時,即使部署程序集和其他所有部分配置正確,Eclipse也不會將jar複製到WEB-INF/lib文件夾中。