Eclipse 下調試Tomcat6源碼

來源:互聯網
上載者:User

標籤:

  原地址:http://denger.iteye.com/blog/834121

    近期對 Tomcat 的一些原理機制產生了興趣,於是便下載源碼進行 DEBUG 來一探究竟~
    TOMCAT_6_0_18.zip 包: http://pan.baidu.com/s/1mgGcPug
    下載解壓後的目錄結構:
     
     很明顯它是基於 ANT 來構建,直接通過

  Eclipse -> New -> Java Project form Existing Ant Buildfile 直接選擇 TOMCAT_6_0_18下面的 build.xml 檔案,

然後在列出來的 task 中的 target 選擇 complie 即可匯入工程。
    


     還沒有完,他的編譯還依賴了四個 jar 檔案,分別是:

   ant.jar、 jaxrpc.jar 、org.eclipse.jdt.core_3.8.3.v20130121-145325.jar、wsdl4j-1.5.1.jar,需要將這四個 jar 檔案引入進去。
     OK了,接下來直接在Eclipse 中的 Debug Configurations 中加入一個啟動 Tomcat 的 Appliction.

具體在 Java Application 中加入Main啟動項,選擇剛才匯入的 Tomcat 6.0項目(實際名字Bootstrap),

Main class 填寫 org.apache.catalina.startup.Bootstrap  啟動類,

Arguments :

    在 Program arguments 填寫  start ,

    在 VM arguments 中填寫 tomcat home 的路徑(源碼路徑),如:-Dcatalina.home="E:\tomcat-src\TOMCAT_6_0_18"。

如所示:


     
     

     配置好後,直接 Apply 並且 Debug,這時候直接啟動會出現如下異常:---此段本人沒有測試
    

Java代碼  
  1. java.lang.ClassNotFoundException: listeners.ContextListener  
  2.     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)  
  3.     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)    


      原因是因為在 tomcat 中的 webapps 中有一個 example 的 webapp, 在這個 app 的 web.xml 配置了 listeners.ContextListener 的監聽,而這個類在它 classpath 中不存在。解決辦法是將 example 直接刪除,反正也不影響 debug。

      至此已經完成了 Tomcat 的部署,接下來要去開始 DEBUG了~  ........

Eclipse 下調試Tomcat6源碼(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.