1. 程式人生 > >Tomcat7原始碼環境搭建

Tomcat7原始碼環境搭建

一、下載Tomcat7原始碼

         從官網上下載Tomcat原始碼,   http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.70/src/apache-tomcat-7.0.70-src.zip

          下載之後,將原始碼解壓後重名為tomcat-src,放在E盤的tomcat7目錄下.

           

 二、安裝Ant

         因Tomcat原始碼需要ant編譯,所以需要安裝Ant,從官網下載後解壓,並配置環境變數即可.

三、安裝JDK6

 tomcat7的編譯需要JDK6的環境,JDK7以及以上,ant 編譯時會報錯.

四、用Ant工具編譯Tomcat原始碼

開啟cmd命令列工具,進入tomcat原始碼目錄,輸入ant  ide-eclipse ,然後按下Enter鍵,會自動下載編譯需要的依賴包.


 

testexist:
     [echo] Testing  for C:\Users\yulei/tomcat-build-libs/objenesis-1.2/objenesis-1.2.jar

downloadzip:
      [get] Getting: https://objenesis.googlecode.com/files/objenesis-1.2-bin.zip
      [get] To: C:\Users\yulei\tomcat-build-libs\download-1649634615.zip
      [get] Error getting https://objenesis.googlecode.com/files/objenesis-1.2-bin.zip to C:\Users\yulei\tomcat-build-libs\download-16496

BUILD FAILED
E:\tomcat7\tomcat_src\build.xml:2697: The following error occurred while executing this line:
E:\tomcat7\tomcat_src\build.xml:2848: java.net.ConnectException: Connection timed out: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:529)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:570)
        at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:141)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:411)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:525)
        at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:272)
        at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:329)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:172)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:923)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:158)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:133)
        at org.apache.tools.ant.taskdefs.Get$GetThread.openConnection(Get.java:728)
        at org.apache.tools.ant.taskdefs.Get$GetThread.get(Get.java:641)
        at org.apache.tools.ant.taskdefs.Get$GetThread.run(Get.java:631)

Total time: 1 minute 58 seconds

可以看見,編譯報錯了,是因為從國外網站下載依賴的objenesis-1.2-bin.zip超時了,導致編譯失敗.

解決辦法,翻牆下載objenesis-1.2-bin.zip檔案,這裡為了方便,為大家提供了下載地址:http://pan.baidu.com/s/1kUWtA8v

將其解壓後放在C:\Users\yulei\tomcat-build-libs 目錄下面


再次執行ant  ide-eclipse 命名就會編譯成功了


編譯成功後,會生成Eclipse的專案檔案(.classpath等),如下圖:


五、將Tomcat7原始碼匯入MyEclipse

匯入MyEclipse後,工程上面會出現紅色感嘆號.

開啟MyEclipse的Problems檢視,可以看到如下錯誤:
解決方案:右鍵tomcat工程,Build Path--->Configure Build Path
如上圖,以Ant舉例,圖示操作,點選ant  ,然後點選Edit..    ,若沒有,需要自己新建一個.


以此類推,把餘下的Tomacat依賴包配置好。TOMCAT_LIB_BASE  配置的地址是:C:/Users/yulei/tomcat-build-libs

六、執行Tomcat

右鍵Tomcat工程,Run As --->Java Application, 選擇Bootstrap.


點選OK,出現如下選項:


選擇start-tomcat,後命令行出現如下資訊:

九月 05, 2016 11:21:21 下午 org.apache.catalina.startup.CatalinaProperties loadProperties
WARNING: Failed to load catalina.properties
九月 05, 2016 11:21:21 下午 org.apache.catalina.startup.Catalina load
WARNING: Unable to load server configuration from [D:\CBSS\code\tomcat-7.0.x\output\build\conf\server.xml]
九月 05, 2016 11:21:21 下午 org.apache.catalina.startup.Catalina load
WARNING: Unable to load server configuration from [D:\CBSS\code\tomcat-7.0.x\output\build\conf\server.xml]
九月 05, 2016 11:21:21 下午 org.apache.catalina.startup.Catalina start
SEVERE: Cannot start server. Server instance is not configured.
表示,tomcat服務沒有跑起來,彆著急,用Ant  deploy一下你的tomcat工程.

deploy成功之後,然後再執行你的tomcat,會出現如下資訊,表示Tomcat服務已成功啟起來:


訪問http://localhost:8080