本文主要参考这篇博客 http://jackycheng2007.iteye.com/blog/1477845,但是整个过程遇到了另外的问题,特记录如下
方式一:从官网http://tomcat.apache.org/download-70.cgi 直接下载,官网提供了Binary 和 Source Code两种下载方式,要研究tomcat源代码,选择source code 方式下载
方式二:利用svn获取源代码,先安装svn,再新建目录tomcat7, 接着在目录里执行以下命令
svn co http://svn.apache.org/repos/asf/tomcat/tc7.0.x/tags/TOMCAT_7_0_35/ ./tags目录下有不同版本的tomcat 源码,这里下载的版本是7.0.35
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.查看编译的错误日志为:
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-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会导致构建失败。
import javax.xml.rpc.Service; import javax.xml.rpc.ServiceException; import javax.wsdl.Definition; import javax.wsdl.Port; import javax.wsdl.extensions.ExtensibilityElement; import javax.wsdl.extensions.soap.SOAPAddress; import javax.wsdl.factory.WSDLFactory; import javax.wsdl.xml.WSDLReader;这些类。本机依然缺少jar包,百度了下发现缺少一个web service的开发工具包 axis-bin-1_4.zip。 下载后,添加到build path里解决。