tomcat源碼分析(一) idea編譯Tomcat源碼


源碼地址:https://gitee.com/archguide/tomcat

 

 源碼克隆下來后,不能直接運行,需要用ant進行編譯,主要目的是下載依賴

 

 

 

在用ant編譯之前,建議先修改build.properties.default文件中的base.path的值,ant編譯時需要去下載第三方jar包,base.path將指定這些jar存放的位置。

 

 

 

修改完成后,在源碼目錄下使用命令行執行ant ide-intellij進行編譯。執行命令后需要等待一段時間。

 

 

 

執行成功后在工程目錄結構中多出一個文件夾,該文件夾保存了Tomcat源碼所依賴的jar。

 

 

 

 

我們要把該文件夾下的jar加入到classpath中去,進入到Project Structure。把下載的依賴添加進來。

 

 

 

 

3. 依賴添加進來后,可以嘗試使用IDEA構建工程了。

 

 

 

構建過程中可能會報錯,比如:

 

 

該modules下的幾個模塊都是maven工程,右鍵pom.xml文件點擊Add as Maven Project,點擊后會自動下載依賴,從而解決構建報錯,其他模塊也類似。

 

對三個模塊都下載依賴后,重新構建后,可能會報如下錯誤:

 

 

提示ant包不存在,需要引入ant.jar的依賴,還是一樣,打開Project Structure,選擇tomcat Module,添加依賴,將ant.jar添加進來,這里需要注意,Tomcat默認用的是ant-1.9.8.jar,所以可以提前把這個jar下載在電腦上,然后引入此jar。

 

 

 

但是Apply的時候,會提示:

 

 

 

這個我也不知道怎么辦了...,解決辦法是,將ant-1.9.8.jar保存在tomcat-build-jars文件夾下,然后右鍵該jar,點擊Add as Library。

 

 

 

 

 

點擊ok,可以繞過剛剛的錯誤。重新構建,仍然會報錯:

 

 

將@VERSION@改成9即可,再次重新構建,構建沒有問題了。

 

如果構建后沒有報錯,但是下圖的這個Java文件中還是報紅色,這應該是IDEA的問題,只需要手動的使用IDEA的快捷提示重新import一下依賴即可。

 

 

4. 構建成功后,運行源代碼。

 

Tomcat的啟動類是org.apache.catalina.startup.Bootstrap類。直接運行此類中的Main方法可以看到Tomcat的啟動日志。

 

 

但是我的機器上有亂碼,Tomcat做了國際化.

 

增加運行參數:-Duser.language=en。

 

 

增加之后再運行就沒有問題了。

 

 

但是此時訪問localhost:8080,仍然會報錯,看不到我們想看到的熟悉的Tomcat歡迎頁

 

 

這是因為Tomcat內部使用了SPI機制來初始化jsp相關的東西,手動運行源碼的過程中默認不會去初始化jsp相關。

 

我們找到

 

 

 

在工程目錄下新建resouces文件夾,然后新建META-INF文件夾,然后將上圖中的services文件夾復制到META-INF文件中,最后將resources文件夾加入到classpath中。

 

 

 

重新運行Bootstrap,訪問正常。

 

 

 

 
 


免責聲明!

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



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