tomcat源码导入eclipse步骤

1. 获取源代码

方式一:从官网http://tomcat.apache.org/download-70.cgi 直接下载,官网提供了Binary 和 Source Code两种下载方式,要研究tomcat源代码,选择source code 方式下载

方式二:利用svn获取源代码,先安装svn,再新建目录tomcat7, 接着在目录里执行以下命令

[java] view plaincopy

  1. 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 plaincopy

  1. BUILD FAILED build.xml:2361: The following error occurred while executing this line:
  2. BUILD FAILED build.xml:2449: Compile failed; see the compiler error output for details.

查看编译的错误日志为:

[java] view plaincopy

  1. build-tomcat-dbcp:
  2. [copy] Copying 64 files to E:\usr\share\java\tomcat7-deps\dbcp
  3. [move] Moving 64 files to E:\usr\share\java\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp
  4. [javac] Compiling 64 source files to E:\usr\share\java\tomcat7-deps\dbcp\classes
  5. [javac] warning: [options] bootstrap class path not set in conjunction with -source 1.6
  6. [javac] E:\usr\share\java\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp\dbcp\BasicDataSource.java:53: error: Bas
  7. icDataSource is not abstract and does not override abstract method getParentLogger() in CommonDataSource
  8. [javac] public class BasicDataSource implements DataSource {
  9. [javac]        ^
  10. [javac] E:\usr\share\java\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp\dbcp\DelegatingStatement.java:46: error:
  11. DelegatingStatement is not abstract and does not override abstract method isCloseOnCompletion() in Statement
  12. [javac] public class DelegatingStatement extends AbandonedTrace implements Statement {
  13. [javac]        ^
  14. [javac] E:\usr\share\java\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp\dbcp\DelegatingPreparedStatement.java:57
  15. : error: DelegatingPreparedStatement is not abstract and does not override abstract method isCloseOnCompletion() in Stat
  16. 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 plaincopy

  1. build-tomcat-dbcp:
  2. [copy] Copying 64 files to E:\usr\share\java\tomcat7-deps\dbcp
  3. [move] Moving 64 files to E:\usr\share\java\tomcat7-deps\dbcp\src\java\org\apache\tomcat\dbcp
  4. [javac] Compiling 64 source files to E:\usr\share\java\tomcat7-deps\dbcp\classes
  5. [javac] 注意:某些输入文件使用或覆盖了已过时的 API。
  6. [javac] 注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
  7. [javac] 注意:某些输入文件使用了未经检查或不安全的操作。
  8. [javac] 注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
  9. [jar] Building jar: E:\usr\share\java\tomcat7-deps\dbcp\tomcat-dbcp.jar
  10. [jar] Building jar: E:\usr\share\java\tomcat7-deps\dbcp\tomcat-dbcp-src.jar

因此,该问题可总结为:tomcat源码依赖的jdk版本为1.6及其以下,使用jdk1.7会导致构建失败。

3.  在build path里添加jar包,解决编译问题

导入eclipse后,会发现工程tomcat7有一个红色的惊叹号,这是因为依赖的jar包没有添加到build path里导致的编译错误。参考博客 http://jackycheng2007.iteye.com/blog/1477845 中的第三步。

遇到的另外问题,org.apache.naming.factory.webservices包下的两个类ServiceProxy,ServiceRefFactory依然有错,无法识别

[java] view plaincopy

  1. import javax.xml.rpc.Service;
  2. import javax.xml.rpc.ServiceException;
  3. import javax.wsdl.Definition;
  4. import javax.wsdl.Port;
  5. import javax.wsdl.extensions.ExtensibilityElement;
  6. import javax.wsdl.extensions.soap.SOAPAddress;
  7. import javax.wsdl.factory.WSDLFactory;
  8. import javax.wsdl.xml.WSDLReader;

这些类。本机依然缺少jar包,百度了下发现缺少一个web service的开发工具包 axis-bin-1_4.zip。 下载后,添加到build path里解决。

题外话:ant没有maven用起来方便,maven可以管理依赖的jar,会自动从maven仓库里下载依赖,无需手动下载jar和添加build path

4. 运行

参考博客http://jackycheng2007.iteye.com/blog/1477845 中的第四步即可

时间: 2024-10-12 13:37:16

tomcat源码导入eclipse步骤的相关文章

Tomcat源码导入eclipse的步骤

Tomcat源码导入eclipse 一.下载源码 1.  进入Apache 官网:http://tomcat.apache.org/ 2.  在左边侧选择要下载的源码的版本. 3.  或者直接通过Archives进入源码目录 4.  源码目录如图,选择需要的版本, 5.  进入相应的源码目录下载相应的源码,我的演示下载的是8.026版本的源码. 二.ANT编译源码 如果没安装ant,请先安装ant,ant是一款编译工具. 编译步奏: 1.  解压源码压缩包 2.  设置依赖包的下载位置,把上步解

tomcat源码导入eclipse

1. 获取源代码 方式一:从官网http://tomcat.apache.org/download-70.cgi 直接下载,官网提供了Binary 和 Source Code两种下载方式,要研究tomcat源代码,选择最下面的source code 方式下载 方式二:利用svn获取源代码,先安装svn,再新建目录tomcat7, 接着在目录里用 svn执行以下命令 svn co http://svn.apache.org/repos/asf/tomcat/tc7.0.x/tags/TOMCAT_

将Spring源码导入eclipse步骤

深入学习spring,研读源码是必须的~ 1.到https://github.com/spring-projects/spring-framework/releases去找自己需要的spring版本,并下载压缩包. 2.解压缩,如果在windows下,首先执行gradlew批处理程序,成功后,再执行import-into-eclipse批处理程序.根据不同的网络情况,经过一段时间,运行完毕后,可以看到源码的文件结构已经符合eclipse的格式了. 3.在eclipse中,导入源码文件夹即可. 将

将tomcat源码导入eclipse

前言: 写完了socket小应用的原始版本,中间还有好多预想的功能没有实现,在写的过程中也发现了很多问题.因为前面有粗略的看过tomcat实现原理解析,知道tomcat其实也是纯java写的web服务器,而且用的也是socket通信.所以特别想看下tomcat是如何处理这些问题的. 主要步骤: 1. 去apache官网下载对应的tomcat版本源码(我这里下载的是9.0.0.M9)  http://tomcat.apache.org/download-90.cgi 2. 解压后的源码是没法作为工

jmeter源码导入eclipse步骤

1.新建标准java项目2.右击项目选import filesystem 将apache-jmeter-4.0整个目录勾选allow output folders for source folders3.勾选apache-jmeter-4.0点击finish4.右击项目show in terminal5.输入2个命令del .classpath rename eclipse.classpath .classpath6.ant添加该项目下的ant的构建文件build.xml7.双击ant中的dow

Hadoop源码导入Eclipse

需要进一步学习hadoop.需要看看内部源码实现,因此需要将hadoop源码导入都eclipse中,简单总结一下,具体步骤如下: 首先确保已经安装了git.maven3.protobuf2.5.如果没有安装需要提前安装一下 1.下载hadoop源码 git clone git://git.apache.org/hadoop-common.git 2.进入hadoop-common目录,用maven生成eclipse工程 mvn install -DskipTests mvn eclipse:ec

如何将OpenTSDB源码导入eclipse

OpenTSDB的官网上介绍了如何将OpenTSDB源码导入eclipse,官方链接,但步骤超级繁琐,还有一个简便方法,下面以导入OpenTSDB2.0.0为例. 1. 下载OpenTSDB2.0.0代码 wget https://codeload.github.com/OpenTSDB/opentsdb/tar.gz/v2.0.0 2. 解压并进入源码目录 tar zxf v2.0.0 cd opentsdb-2.0.0/ 3. 生成pom.xml文件 ./build.sh pom.xml 4

如何将struts源码导入eclipse

预制条件和spring源码导入eclipse中一样,下面直接给出导入eclipse的步骤. 步骤: 1. 下载struts相应版本的源码 http://struts.apache.org/download.cgi .我这里下载的是struts-2.3.16-all.zip.下载完成后解压到本地目录. 2. struts的源码是通过maven管理的,所以需要下载maven http://maven.apache.org/download.cgi .下在完成后同样解压到本地目录,然后配置MAVEN_

spring源码解析——spring源码导入eclipse

一.前言     众所周知,spring的强大之处.几乎所有的企业级开发中,都使用了spring了.在日常的开发中,我们是否只知道spring的配置,以及简单的使用场景.对其实现的代码没有进行深入的了解.开卷有益,在我们空闲的时间里面阅读一下spring的源码,对提升我们的自身能力还是还有很大的帮忙.下面总结一下spring源码导入eclipse的具体的操作. 二.spring的特点 spring的的核心就是IOC(控制反转)和AOP(基于切面的编程) 事务管理方面采用了:声明式事务 为各种主流