2013-05-15 133 views
2

我有一個Vaadin項目和一個外部Java項目。我想在Vaadin的外部項目中調用代碼。我在Eclipse中導入了兩個項目,Vaadin項目在Eclipse Java Build Path中引用了外部項目。 Eclipse的報告沒有錯誤,但是當我部署Vaadin應用到Tomcat(使用Project > Run As > Run on Server),我收到以下錯誤:Vaadin的外部項目依賴項

HTTP Status 500 - java.lang.NoClassDefFoundError: com/example/MyClass 

注意,Vaadin項目是基於常春藤,沒有Maven的。

我試過四處尋找Vaadin外部項目依賴關係,沒有成功。對於如何使用Vaadin的外部項目代碼的任何建議,我將非常感激。

回答

2

解決的辦法是將外部項目添加到Eclipse中的Tomcat實例的類路徑中。選擇

Run > Run Configurations > Apache Tomcat > (your Tomcat instance) > Classpath 

點擊Add Projects...並添加所需的項目。

這將用於開發。對於部署,外部項目必須作爲庫打包到.jar文件中,並手動複製到Vaadin項目的WEB-INF/lib目錄(請參見Vaadin論壇上的this answer),以手動複製(或使用構建腳本)。

+0

這幫了我。但是當您將項目導出到WAR文件時會發生什麼?依賴不會被尊重。這個問題如何解決? – Atmocreations

+0

@Mifeet,我在Classpath中添加了外部項目,但面臨同樣的問題Class not found。 – JankiPanwala

1

另一種解決方案,這將直接在WEB-INF/lib部署的依賴關係是:

- 你的外部項目添加到Project/Java Build Path/Projects
- 添加外部項目庫(假設爲Maven的在這裏)的Project/Java Build Path/Libraries
點擊Add Variable/M2_REPO並點擊Extend選擇合適的圖書館。
如果你依賴於許多庫,這部分可能會很痛苦。
- 在Project/Deployment Assembly面板中添加您的外部項目和Java構建路徑條目。
- 重新啓動Tomcat實例。

檢查 WEB-INF/lib目錄下的內容:
eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\your_ project\WEB-INF\lib

0

把你的外部項目並將其導出爲一個罐子。然後將您的新jar和任何依賴項複製到您的vaadin項目的WEB-INF/lib目錄中。這將在部署以及開發環境中起作用。