JavaShuo
欄目
標籤
Tomcat源碼學習(一) 源碼編譯和導入Eclipse
時間 2019-11-08
標籤
tomcat
源碼
學習
編譯
導入
eclipse
欄目
Tomcat
简体版
原文
原文鏈接
因爲如今項目相對比較輕鬆,並且項目是研究SOA和Web Service的,所以這裏我要對一些相關的開源技術作一些研究。接下來我要寫的文章是Tomcat源碼系列的文章,文章(一)是關於Tomcat源碼編譯和如何將Tomcat工程導入Eclips的,這裏分享一下編譯經驗。
你們都知道Java的開源項目很強大,正是這些開源項目促進大量優秀的程序員進步和推進軟件的快速發展。瞭解和看過開源項目的程序員很多,可是真正參與進去的程序開發者就很少了。其實只有真正參與到開源項目中,咱們的開發能力就會大大加強,咱們的開發者就會更加優秀、更善於軟件管理,咱們的軟件產業也會越作越強。
我以爲能夠用構建和諧社會的一句話來描述開源軟件,那就是:在共享中共建,在共建中共享。好了,不說這麼多了,開始咱們的Tomcat源碼之旅了。
1.下載Tomcat源碼
請先從
[url]http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91[/url]
下載版本控制工具SubVersion,下載到的是svn-win32-1.5.4.zip,解壓後將bin路徑放到環境變量path下,就可使用這個版本控制工具了。
在MS-DOS窗口中輸入:
svn export
[url]http://svn.apache.org/repos/asf/tomcat/tc6.0.x/tags/TOMCAT_6_0_18/[/url] F:\project\tomcat\apache-tomcat-6.0.18-src\ 這裏我把要下載的源碼放到F盤的這個目錄了。TOMCAT_6_0_18是當前最新的源碼版本。
該目錄顯示的就是Tomcat源碼目錄,這裏的output目錄和eclipse_output目錄是沒有的,這是我以後編譯生成的目錄。所以你們須要注意。
2.編譯並運行
使用Ant工具進行代碼編譯。從
[url]http://ant.apache.org/bindownload.cgi[/url]
處下載Ant工具。我下載的是apache-ant-1.7.1-bin.zip,解壓後把bin路徑放到環境變量path下就可使用了。
把該目錄下的build.properties.default文件更名爲:build.properties。打開build.properties,找到base.path=/usr/share/java,改成base.path=F:/project/share。F盤下的這個目錄是我本地的存在的目錄,讀者能夠設置本身電腦上一個存在的目錄便可。
在
Tomcat
編譯過程當中,
Ant
會讓咱們下載一些必要的依賴項目,
base.path
目錄就是用來保存這些項目文件的,咱們能夠將這個屬性指向一個已經存在的目錄。修改完
base.path
後,咱們回到
MS-DOS
窗口,切換到
Tomcat
源代碼所在目錄,而後運行
ant download
命令,以下圖所示:
此次咱們等的時間較長,由於
eclipse-JDT-3.2.zip
大約有20多
M
,下載須要一段時間。
一段時間後,編譯器可能給出幾個警告。這時咱們可發現剛纔建立的
base.path
目錄(
F:/project/share
)中已經下載了
6
個依賴項目,它們都是
Tomcat
編譯所必須的。
下面就開始真正的編譯任務了,請在
MS-DOS
窗口內鍵入
ant
並回車,
Ant
將在
2
分鐘內編譯
1000
多個源文件並將
Tomcat
部署到
output
目錄。編譯順利完成後,請打開
Tomcat
的源代碼目錄,會發現多了一個
output
目錄,這是
Ant
的編譯後的輸出目錄。請打開
Tomcat
源代碼的
output\build\bin
子目錄,雙擊
startup.bat
文件,咱們便可成功啓動
Tomcat6.0
,若是不成功,請注意設置環境變量CATALINA_HOME,設置爲F:\project\tomcat\apache-tomcat-6.0.18-src\output\build。此時咱們的編譯工做就算順利完成了。
這裏可能會有錯誤出現:
(1)執行ant download命令時出現錯誤,緣由多是找不到build.properties文件中的行 jdt.loc=http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.3.1-200709211145/eclipse-JDT-3.3.1.zip 這個包,讀者在網上搜索到這個包後,把網址換一下便可。不過我用的都是最新的版本,至少在一段時間內都是可用的。
(2)執行ant命令時出錯,緣由有不少。我遇到的錯誤是以下錯誤:
[javac] D:\tomcat\share\tomcat6-deps\dbcp\src\java\org\apache\tomcat\dbcp\db
cp\BasicDataSource.java:43: org.apache.tomcat.dbcp.dbcp.BasicDataSource 不是抽象
的,而且未覆蓋 java.sql.Wrapper 中的抽象方法 isWrapperFor(java.lang.Class<?>)
[javac] public class BasicDataSource implements DataSource {
[javac] ^
[javac] D:\tomcat\share\tomcat6-deps\dbcp\src\java\org\apache\tomcat\dbcp\db
cp\DelegatingStatement.java:45: org.apache.tomcat.dbcp.dbcp.DelegatingStatement
不是抽象的,而且未覆蓋 java.sql.Statement 中的抽象方法 isPoolable()
等等一大堆錯誤,這個緣由是因爲我使用的JDK版本是1.6的,因此會出現這個問題,把JDK版本換成1.5的,把JAVA_HOME也換成1.5版本的JDK便可,這些錯誤就解決了。還有一些警告,不過沒有關係。
若是讀者在編譯過程當中還有其餘錯誤和問題,請留言聯繫我。
3.導入源碼到Eclipse中
(1)打開Eclipse,新建一個Java工程,選擇「
Create project from existing source
」,導入現有的代碼工程,以下圖所示:
點擊「Finish」完成工程建立。
(2)導入完成後,會看到一些錯誤提示。右擊工程tomcat,選擇"build Path"->Config Build path ,刪除兩個以TOMCAT_LIBS開頭的兩個庫,保留JRE庫和JUnit庫。
(3)把ant.jar(剛纔下載的ant中的lib裏有)和org.eclipse.jdt.core_3.3.1.v_780_R33x.jar(在剛纔設置的F:\project\share中有)copy到代碼工程下的lib文件夾下(lib文件夾以前沒有,須要手動新建)。選擇「Config Build path」->"Add library",加入一個User library,把這兩個jar包加進來,命名成tomcat_lib。在Tomcat最新版本6.0.18中,有兩個.java代碼文件:ServiceProxy.java和ServiceRefFactory.java中用到了一些其餘包中的類,如import javax.xml.rpc.Service和import javax.wsdl.Definition等類,這些類分別在包jaxrpc.jar和wsdl4j-1.5.1.jar中,這兩個包都在axis2的lib中,我下載的版本是axis-bin-1_4.zip,下載地址是:[url]http://apache.freelamp.com/ws/axis/1_4/axis-bin-1_4.zip [/url] 解壓後在lib目錄能夠看到這兩個jar包,直接加入到工程便可。
添加完成後,以下圖所示:
(4)運行tomcat:找到tomcat的啓動主類org.apache.catalina.startup包下的Bootstrap類,右擊->「Run AS」->"Run Configurations",在Arguments窗口中作以下設置:
在Program arguments中寫入:start
在VM arguments中寫入:-Dcatalina.home="F:\project\tomcat\apache-tomcat-6.0.18-src\output\build" 。以下圖所示:
而後運行,能夠看到tomcat啓動成功,以下圖所示:
(5)中止tomcat:跟上面步驟同樣,在Program arguments中寫入:stop,點擊運行。便可中止tomcat。
4.總結
到此爲止,咱們的tomcat源碼的兩種編譯方式和導入Eclipse都已經完成,這裏之因此導入到Eclipse是爲了方便讀代碼,也能夠對代碼進行單步調式,看看代碼的執行過程,這是比較有意義的事情。好了接下來的任務就是深刻代碼內部了,這是一個使人激動的事情,由於tomcat是一個很優秀的項目,其代碼也頗有誘惑力。不說了,我開始欣賞代碼了,之後的文章就會跟你們分享代碼的細節了,還去有興趣讀者關注和一塊兒討論。因爲工程比較大,遠遠超過2M,我就不上傳了,有須要的讀者能夠留言,我發給你們。
本文出自 「
C++技術
」 博客,請務必保留此出處
http://panpan.blog.51cto.com/489034/120826
php
相關文章
1.
Tomcat源碼學習(一) 源碼編譯和導入Eclipse
2.
Tomcat 源碼編譯和導入Eclipse
3.
tomcat學習-eclipse導入源碼
4.
Eclipse導入Tomcat源碼
5.
Eclipse導入Tomcat源碼【轉】
6.
tomcat源碼導入eclipse
7.
Tomcat源碼導入eclipse
8.
tomcat 源碼導入eclipse
9.
eclipse導入tomcat 8.0x源碼
10.
eclipse導入tomcat源碼
更多相關文章...
•
XML 編碼
-
XML 教程
•
Eclipse 編譯項目
-
Eclipse 教程
•
Tomcat學習筆記(史上最全tomcat學習筆記)
•
Java Agent入門實戰(二)-Instrumentation源碼概述
相關標籤/搜索
源碼學習
spark2.4.4源碼編譯
源碼導讀
源碼
Zookeeper源碼一
Spark2.0源碼學習
STL源碼學習
Redis5源碼學習
React源碼學習
RocketMQ源碼學習
Eclipse
Tomcat
Eclipse 教程
XLink 和 XPointer 教程
SQLite教程
亂碼
靜態資源
學習路線
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
JDK JRE JVM,JDK卸載與安裝
2.
Unity NavMeshComponents 學習小結
3.
Unity技術分享連載(64)|Shader Variant Collection|Material.SetPassFast
4.
爲什麼那麼多人用「ji32k7au4a83」作密碼?
5.
關於Vigenere爆0總結
6.
圖論算法之最小生成樹(Krim、Kruskal)
7.
最小生成樹 簡單入門
8.
POJ 3165 Traveling Trio 筆記
9.
你的快遞最遠去到哪裏呢
10.
雲徙探險中臺賽道:借道雲原生,尋找「最優路線」
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
Tomcat源碼學習(一) 源碼編譯和導入Eclipse
2.
Tomcat 源碼編譯和導入Eclipse
3.
tomcat學習-eclipse導入源碼
4.
Eclipse導入Tomcat源碼
5.
Eclipse導入Tomcat源碼【轉】
6.
tomcat源碼導入eclipse
7.
Tomcat源碼導入eclipse
8.
tomcat 源碼導入eclipse
9.
eclipse導入tomcat 8.0x源碼
10.
eclipse導入tomcat源碼
>>更多相關文章<<