eclipse Reference 功能之——項目之間的引用


i'm sorry, i forgot this article where i found. that it is referenced.

 

以前也研究過Eclipse里Web Project引用Java Project的問題,沒有解決,特地再深入研究了一下。 
思路及實踐如下: 
1.Elcipse里Project Properties里有Project Reference的設置,說明有這個特性,Java Builder Path里也有引用的Projects設置。 
試驗:建立兩個Java Project A、B,B引用A,設置B的Java Builder Path/Projects引用Project A,則B中的Class可以調用A中的Class,編譯和運行都通過。 
說明Eclipse對Java Project的解決方案良好。 
(Project Reference的設置不知道有什么用處) 
2.Web應用,使用Eclipse WTP 
按上面的試驗設置,(這里的B項目是一個Web項目),編譯可以通過,但是運行時找不到A項目中的類。 
沒有找到有相應的解決方案。 
3.Web應用,使用Sysdeo Tomcat Plugin 
發現有這個Window/Preferences/Tomcat/Advanced/Add Java Projects to Tomcat classpath設置,將Java項目設置到Tomcat的類路徑中,對Tomcat是全局的,有一些不靈活,和其它的缺陷,比如加載這些類的ClassLoader將是SystemClassLoader而不是WebAppClassLoader,這將影響某些資源文件的加載。 
另外,我在Tomcat5.5.17上試驗這個設置,結果啟動Tomcat就出錯。

看了Sysdeo的文檔,它介紹了DevLoader就專門解決這個問題的。看了一下他的源碼,很簡單,總共只有200行,基本上的邏輯是,讀取Eclipse項目下的.#webclasspath、.classpath文件以獲得引用的java類路徑,由 
DevLoader加載這些項目外的類。 
具體操作是: 
1)設置Java Builder Path; 
2)將Sysdeo Plugin下的DevLoader.zip解壓到Tomcat目錄/server/classes下,在Tomcat Project/Project Properties/Tomcat/Devloader 中選中Active DevLoader,及選中列表中項目外的classpath。 
參考Sysdeo Plugin的ReadmeDevLoader.html.

這樣就解決了這個問題,效果是:修改了項目A、B中的代碼,不用重起Tomcat,就可以在瀏覽器中立即看到修改后的效果。


==========================================

Sysdeo Eclipse Tomcat Launcher plugin 是做J2EE開發的時候經常用到的一款插件,可以在Eclipse中啟動Tomcat,同時可以把Tomcat進程綁定到Eclipse Java Debugger中,這樣可以在運行時進行一些debug操作,當修改或者新增、刪除了一些java文件以后,Tomcat Context會自動重新load,這樣不用每次做了修改都需要重啟Tomcat。

在使用這款插件的時候,往往很多人會遇到這樣的一個異常:ClassNotFoundException: org.apache.catalina.loader.DevLoader,很多人解決的辦法往往是禁用DevLoader功能。其實DevLoader提供的功能是很有用的,它實現和擴展了WebappLoader。我們知道,默認情況下,我們需要把classes和jar文件都放到web應用所在的WEB-INF/classes和WEB-INF/lib下,但是在實際的開發環境下,往往需要引用到外部的classes和jar文件,比如另外一個項目中的classes,這個時候如果在沒有DevLoader的情況下我們需要把這些classes和jar文件拷貝到web應用所在的WEB-INF下的相應目錄中,而如果啟用了DevLoader,則沒有了上述的限制,可以加載項目用到的所有classpath中的classes和jar。

啟用DevLoader的方法:

選中Activate DevLoader
選中需要加載的類庫
在插件包中找到文件DevLoader.zip,解壓縮到tomcat/server/classes下。

http://sam9901.iteye.com/blog/114746


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM