`
lwz52169
  • 浏览: 36313 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

Tomcat源代码编译和导入Eclipse

 
阅读更多

转自:http://aman.cao.blog.163.com/blog/static/3295133620100422522771/

1. 下载Tomcat6.0的源代码

首先,我们得下载Tomcat6.0的源代码。

Tomcat源代码的版本控制工具是Subversion

svn地址:http://svn.apache.org/repos/asf/tomcat/tc6.0.x/tags/TOMCAT_6_0_0/
下面是源代码的目录机构,从这个目录结构中,我们可以看出该项目的开发者使用的IDE是Eclipse,因为我们看到了熟悉的.project及.classpath文件。如果您打算开发一个Stand alone的Java应用程序,不妨借鉴一下Tomcat的目录结构,把脚本文件放在bin目录,将xml和properties配置文件放在conf目录中,把Java源码文件放在java或者src目录中,资源文件比如说图片文件,ini文件及其它的一些静态资源文件可以放在res目录,测试源代码可以放在test目录中。这是一个典型的Java应用程序的目录机构,笔者以前曾接触到一个来自美国的产品,其源代码目录结构和Tomcat及其相像。



2. 编译并运行

代码下载后,我们接下来就是要编译并运行Tomcat。使用Ant进行编译。然后,请从Tomcat的源代码文件找到build.properties.default文件,并将该文件复制到同级目录下build.properties,然后打开build.properties,找到下面这行:

base.path=/usr/share/java

将它改为:

base.path= D:/carl_wu/tomcat/share

在Tomcat编译过程中,Ant会让我们下载一些必要的依赖项目,base.path目录就是用来保存这些项目文件的,我们可以将这个属性指向一个已经存在的目录。修改完base.path后,我们回到MS-DOS窗口,切换到Tomcat源代码所在目录,然后运行ant download命令



一分钟未到,Ant就告诉我们一个错误并提示我们编译失败,具体错误信息如下:

downloadzip:

[get] Getting: http://sunsite.informatik.rwth-aachen.de/eclipse/downloads/drops/R-3.2-200606291905/eclipse-JDT-3.2.zip
[get] To: D:\carl_wu\tomcat\share\file.zip
[get] Error opening connection java.io.FileNotFoundException: http://sunsite.informatik.rwth-aachen.de:3080/eclipse/downloads/drops/R-3.2-200606291905/eclipse-JDT-3.2.zip

[get] Error opening connection java.io.FileNotFoundException: http://sunsite.informatik.rwth-aachen.de:3080/eclipse/downloads/drops/R-3.2-200606291905/eclipse-JDT-3.2.zip

[get] Error opening connection java.io.FileNotFoundException: http://sunsite.informatik.rwth-aachen.de:3080/eclipse/downloads/drops/R-3.2-200606291905/eclipse-JDT-3.2.zip

[get] Can't get http://sunsite.informatik.rwth-aachen.de/eclipse/downloads/drops/R-3.2-200606291905/eclipse-JDT-3.2.zip to D:\carl_wu\tomcat\share\file.zip

BUILD FAILED

D:\carl_wu\tomcat\src\build.xml:554: The following error occurred while executing this line:

D:\carl_wu\tomcat\src\build.xml:514: Can't get http://sunsite.informatik.rwth-aachen.de/eclipse/downloads/drops/R-3.2-200606291905/eclipse-JDT-3.2.zip to D:\carl_wu\tomcat\share\file.zip

Total time: 41 seconds

这个编译错误非常简单,就是找不到http://sunsite.informatik.rwth-aachen.de/eclipse/downloads/drops/R-3.2-200606291905/eclipse-JDT-3.2.zip 文件。有人可能会想,Tomcat的编译和Eclipse的JDT有什么关系?其实不然,Tomcat是在Eclipse下开发的,所以需要Eclipse的JDT(Java Development tooling)插件来编译Tomat源代码。既然找不到,我们只好自己动手,上Google一搜,马上发现这个文件的有效下载地址为:http://archive.eclipse.org/eclipse/downloads/drops/L-3.2_Language_Packs-200607121700/NLpack1-eclipse-JDT-3.2.zip。我们打开刚才的build.properties文件,将其34行修改为:

jdt.loc= http://archive.eclipse.org/eclipse/downloads/drops/L-3.2_Language_Packs-200607121700/NLpack1-eclipse-JDT-3.2.zip
修改保存build.properties文件后,重新开始ant download任务。这次我们等的时间较长,因为eclipse-JDT-3.2.zip大约有19M,下载需要一段时间。我们可乘此机会去泡杯茶弄点咖啡什么的,等我们品茶回来,发现敬业的蚂蚁Ant告诉我们编译成功,虽然编译器给出几个警告。这时我们可发现刚才创建的base.path目录(D:\carl_wu\tomcat\share)中已经下载了6个依赖项目,它们都是Tomcat编译所必须的。

下面就开始真正的编译任务了,请在MS-DOS窗口内键入ant并回车,Ant将在2分钟内编译1000多个源文件并将Tomcat部署到output目录。编译顺利完成后,请打开Tomcat的源代码目录,会发现多了一个output目录,这是Ant的编译后的输出目录。请打开Tomcat源代码的output\build\bin子目录,双击startup.bat文件,我们即可成功启动Tomcat6.0,此时我们的编译工作就算顺利完成了。


3. 导入源代码到Eclipse

3.1 请打开Eclipse,新建一个Java项目,然后点击“Next”按钮,请选择“Create project from existing source”, 并在Directory文本框内填入我们刚才下载的Tomcat源代码目录(i.e. D:\carl_wu\tomcat\src),然后点击“Next”直至结束。




3.2 我们将会看到Eclipse拒绝编译,这是因为Eclipse找不到该项目指定的库文件。请右击该项目,在弹出菜单中选择“Properties”à“Libraries”,然后删除两个以TOMCAT_LIBS开头的两个库文件,只保留一个JRE库文件,然后点击“OK”按钮,这时Eclipse开始编译Tomcat源代码,但是发现一堆错误,这是因为我们没有为该项目添加编译所必须的Jar包。

3.3 准备好Tomcat项目所必须的jar文件,其实,刚才我们运行ant download任务时,已经下载过这些jar文件包。

ant.jar (请在ant安装目录的lib子目录中拷贝)

commons-collections-3.1.jar (从刚才Ant下载的commons-collections-3.1子目录中拷贝)

commons-dbcp-1.2.1.jar(从刚才Ant下载的commons-dbcp-1.2.1子目录中拷贝)

commons-logging-1.1.jar(如果您本机没有这个jar包,请从http://commons.apache.org/downloads/download_logging.cgi处下载)

commons-pool-1.2.jar(从刚才Ant下载的commons-pool-1.2子目录中拷贝)

org.eclipse.jdt.core_3.2.0.v_671.jar(从刚才Ant下载的eclipse\plugins子目录中拷贝)

3.4 当我们准备好这些jar文件后,将这些文件拷贝到某一目录(比如说D:\carl_wu\tomcat\tomcat_lib目录),然后在Eclipse中新建一个User Libraries,我们将这个新建的User Libraries命名为TOMCAT_LIBS,并把这些文件加到TOMCAT_LIBS。然后将我们新建的TOMCAT_LIBS添加到Tomcat6项目。另外,别忘了把JUnit库也加到Tomcat6项目。这时Eclipse开始重新编译,编译过程顺利通过,所有错误均消失,此时Tomcat6项目的目录结构如下:





还有,请把test目录也加入到源代码中,方法是在Eclipse中右击”test”目录,然后在弹出菜单中选择“Build path”à”Use as Source Folder”,之后我们会看到test目录上就多了个源代码的符号,如上图所示。

3.5在Eclipse中运行Tomcat。请找到Tomcat的启动主类org.apache.catalina.startup.Bootstrap,右击这个类,在弹出菜单中选择“Run As…”à”Open Run Dialog…”,然后在弹出的“Run”窗口中填入程序运行参数“start”和JVM运行参数catalina.home,如下面窗口所示:




然后点击“Run”按钮,我们将会看到Tomcat正常启动。恭喜,咱们的Tomcat源码已经成功导入Eclipse,这时,可视化的UML分析工具及Debug工具就能派上用场了。

3.5 调试Tomcat,请打开org.apache.jasper.compiler.Compiler类的源代码,在generateJava()方法的第一行打一个断点,然后在Eclipse的调试状态下运行Tomcat,等Tomcat运行后,打开我们的浏览器,在地址栏中输入http://localhost:8080/examples/jsp/jsp2/el/basic-comparisons.jsp并回车,然后我们可观察到Eclipse此时切换至调试视图:







上面的小实验表明我们可以在Eclipse中通过Debugger观察Tomcat的内部运行机理。另外补充一点,上面的generateJava方法是将jsp动态编译至java class,这个方法只是在第一次请求或者Jsp源码发生变化时执行,如果您再次在浏览器中发送同样的请求,您将看不到上图的Debug界面,因为该方法不再执行。

另外,还有一点很有意思。Tomcat6以前版本的源代码分散在好几个子项目中,他们分别叫做jakarta-servletapi-5,jakarta-tomcat-5,jakarta-tomcat-catalina,jakarta-tomcat-connectors和jakarta-tomcat-jasper,我觉得Tomcat的开发者可能嫌这样做太麻烦了,所以Tomcat6版本中将这些子项目都合并在一起了。但是,这种做法不利于我们阅读理解源代码。

 

分享到:
评论

相关推荐

    Tomcat源码学习(一) 源码编译和导入Eclipse

    【Tomcat源码学习(一) 源码编译和导入Eclipse】 在深入学习Tomcat源码之前,首先需要获取源码并将其配置到开发环境中,这通常涉及到源码下载、编译以及在集成开发环境(IDE)中导入项目。本篇文章将指导初学者完成...

    Tomcat6.0.41源代码,可直接导入Eclipse

    下面将详细介绍Tomcat 6.0.41源代码中的关键组件、功能以及如何在Eclipse中进行编译和运行。 一、Tomcat架构 Tomcat由几个核心组件构成,包括Catalina(Servlet容器)、Jasper(JSP引擎)、 Coyote(HTTP连接器)和...

    Tomcat7.0源码,可直接导入eclipse

    本文将探讨如何将Tomcat7.0源码导入Eclipse,并进行本地运行,以实现高效的学习和调试。 首先,我们关注的是"Tomcat7.0源码",它是Apache软件基金会的项目,包含了处理HTTP请求、管理Web应用程序、执行Servlet和JSP...

    Tomcat8 源码,可以在eclipse中直接运行

    在Eclipse中运行Tomcat源码前,确保已正确配置了Eclipse的Java和Web开发工具(如JDT和WTP)。导入源码后,需要设置项目的构建路径,确保所有依赖项被正确引入。描述中提到的"依赖添加完毕",意味着源码已经包含了...

    eclipse运行tomcat源码:修改源码:重新编译:重新打包

    4.tomcat源码在eclipse运行,重新编译,重新打包步骤文件 5.一个tomcat源码在eclipse上运行的java工程 作用: 1.用于学习tomcat源码和了解tomcat运行机制 2.学习如何修改tomcat源码后如何重新编译,打包。

    tomcat7_0_29官方源码已编译导入eclipse可运行

    tomcat7_0_29官方源码已编译导入eclipse可运行,已用ant编译过了 ,导入即可,不会报错,运行的话,请看里面的readme.txt

    可在Eclipse中导入和运行的tomcat源代码

    【标题】:“在Eclipse中导入和运行的Tomcat源代码” 【正文】: Tomcat,作为Apache软件基金会的一个开源项目,是Java Servlet和JavaServer Pages(JSP)的最广泛应用服务器之一。它以其轻量级、高效和易用性而广...

    tomcat 源码导入eclipse工程

    - 为了能够在Eclipse中跳转到标准库的源代码,需要安装Javadoc和源码附件。右键点击相应的JAR,选择“Properties” > “Java Source Attachment”。 - 添加JDK的src.zip或Javadoc位置,以便在查看类定义时能够查看...

    tomcat6.0源码,可直接导入eclipse运行

    1. **创建新的项目**:在Eclipse中,选择“File” > “New” > “Java Project”,然后将源码目录设置为项目源代码。 2. **添加库**:确保你的项目包含所有必要的JAR文件,这些文件通常位于`common/`, `lib/`和`...

    tomcat源码导入myeclipse

    2. **获取源码**:从Tomcat官方网站下载源码压缩包,解压后得到源代码目录。 3. **创建项目**:在MyEclipse中创建一个新的Java工程,命名为Tomcat源码的版本号。 4. **添加源码**:将解压后的源码目录导入到...

    Eclipse导入TOMCAT7源码所需jar包

    为了在Eclipse中导入和编译Tomcat源码,我们需要设置合适的构建路径,这通常包括添加必要的库和JAR依赖。 3. **Ant**:Ant是Apache的构建工具,类似于Java世界的Makefile。在导入Tomcat源码时,Ant的配置文件...

    tomcat7.0.42源码,eclipse直接使用

    Eclipse是一个广泛使用的Java集成开发环境(IDE),它支持直接导入和管理Tomcat源码。在Eclipse中,开发者可以通过导入“Existing Projects into Workspace”来加载Tomcat源码。然后,可以利用Eclipse的强大功能,如...

    编译tomcat源码所需jar包

    首先,我们来了解一下为什么要从源码编译Tomcat。直接下载预编译的二进制版本固然方便,但有时为了定制特定功能、修复bug或者跟踪最新的开发进度,开发者可能需要从源码开始构建。此外,源码编译也能确保与特定环境...

    tomcat源码编译缺少jar包

    在进行Tomcat源码编译时,我们可能会遇到各种依赖问题,特别是在Eclipse这样的集成开发环境中。对于"tomcat7.0.19源码导入Eclipse后,编译缺少的jar包"这个问题,我们需要深入理解Tomcat的构建过程、源码结构以及...

    tomcat7.0编译好的源码

    tomcat源码工程,build步骤: 1,解压到eclipse工程目录下 2,找到build.properties.default文件,重命名为build.properties 3,打开build.properties,找到base.path,将该变量定位到你的硬盘上一个存在的目录,...

    Tomcat6 编译好的源码

    【标题】"Tomcat6 编译好的源码"指的是Apache Tomcat服务器的第六个主要版本的源代码,已经经过编译过程,可以直接用于开发或学习。Tomcat是一款开源的Java Servlet容器,它实现了Java EE的Web应用服务规范,如...

    tomcat7源码

    总的来说,深入研究Tomcat7源码不仅能够提升我们的技术能力,还能让我们更好地理解和优化Web应用的性能。通过学习源码,我们可以了解到如何编写高效、健壮的服务器端代码,这对于任何Java开发者来说都是一笔宝贵的...

    apache-tomcat-9.0.8-src可直接导入eclipse的源码

    源码包"apache-tomcat-9.0.8-src"包含了Tomcat的所有源代码,包括核心组件、模块和服务。它由多个子目录构成,每个目录对应Tomcat的不同部分,如catalina(核心服务器组件)、jdbc-pool(JDBC连接池)、common(公共...

    在eclipse当中运行tomcat源代码需要的jar包

    在Eclipse中运行Tomcat源代码,需要一系列的依赖库,包括JAR包,以便能够正确编译、理解和执行Tomcat服务器的相关组件。以下是对给定的文件信息中提到的几个关键JAR包的详细解释: 1. **org.eclipse.jdt.core_3.4.0...

Global site tag (gtag.js) - Google Analytics