tomcat源碼下載並匯入eclipse 2013-10-07 00:21 10962人閱讀 評論(1) 收藏 舉報 分類: tomcat(2)
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
目錄(?)[+]
本文主要參考這篇部落格 http://jackycheng2007.iteye.com/blog/1477845,但是整個過程遇到了另外的問題,特記錄如下
1. 擷取原始碼
方式一:從官網http://tomcat.apache.org/download-70.cgi 直接下載,官網提供了Binary 和 Source Code兩種下載方式,要研究tomcat原始碼,選擇source code 方式下載
方式二:利用svn擷取原始碼,先安裝svn,再建立目錄tomcat7, 接著在目錄裡執行以下命令
[java] view plain copy svn co http://svn.apache.org/repos/asf/tomcat/tc7.0.x/tags/TOMCAT_7_0_35/ ./ tags目錄下有不同版本的tomcat 源碼,這裡下載的版本是7.0.35
2. 將源碼匯入eclipse tomcat的源碼是利用ant來建立和管理的。先安裝ant,再執行ant ide-eclipse,該命令執行成功後,會在tomcat7目錄下生產.project和.classpath兩個檔案,即成為eclipse工程了。這樣你就可以將tomcat源碼匯入eclipse了。 執行ant ide-eclipse時報錯: [java] view plain copy BUILD FAILED build.xml:2361: The following error occurred while executing this line: BUILD FAILED build.xml:2449: Compile failed; see the compiler error output for details. 查看編譯的錯誤記錄檔為: [java] view plain copy build-tomcat-dbcp: [copy] Copying 64 files to E:\usr\share\java\tomcat7-deps\dbcp [move] Moving 64 files to E:\usr\share\java\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp [javac] Compiling 64 source files to E:\usr\share\java\tomcat7-deps\dbcp\classes [javac] warning: [options] bootstrap class path not set in conjunction with -source 1.6 [javac] E:\usr\share\java\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp\dbcp\BasicDataSource.java:53: error: Bas icDataSource is not abstract and does not override abstract method getParentLogger() in CommonDataSource [javac] public class BasicDataSource implements DataSource { [javac] ^ [javac] E:\usr\share\java\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp\dbcp\DelegatingStatement.java:46: error: DelegatingStatement is not abstract and does not override abstract method isCloseOnCompletion() in Statement [javac] public class DelegatingStatement extends AbandonedTrace implements Statement { [javac] ^ [javac] E:\usr\share\java\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp\dbcp\DelegatingPreparedStatement.java:57 : error: DelegatingPreparedStatement is not abstract and does not override abstract method isCloseOnCompletion() in Stat ement 根據日誌錯誤推測,依賴的dbcp相關的jar版本不對。本機安裝的jdk版本是1.7的,於是在本機又裝了一個1.6的jdk,並修改相關環境變數讓JAVA_HOME指向jdk 1.6目錄。再次執行ant ide-eclipse得到了 BUILD SUCCESSFUL
Total time: 2 minutes 57 seconds
也注意到 build-tomcat-dbcp的構建日誌更新為: [java] view plain copy build-tomcat-dbcp: [copy] Copying 64 files to E:\usr\share\java\tomcat7-deps\dbcp [move] Moving 64 files to E:\usr\share\java\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp [javac] Compiling 64 source files to E:\usr\share\java\tomcat7-deps\dbcp\classes [javac] 注意:某些輸入檔案使用或覆蓋了已淘汰的 API。 [javac] 注意:要瞭解詳細資料,請使用 -Xlint:deprecation 重新編譯。 [javac] 注意:某些輸入檔案使用了未經檢查或不安全的操作。 [javac] 注意:要瞭解詳細資料,請使用 -Xlint:unchecked 重新編譯。 [jar] Building jar: E:\usr\share\java\tomcat7-deps\dbcp\tomcat-dbcp.jar [jar] Building jar: E:\usr\share\java\tomcat7-deps\dbcp\tomcat-dbcp-src.jar 因此,該問題可總結為:tomcat源碼依賴的jdk版本為1.6及其以下,使用jdk1.7會導致構建失敗。