锁定老帖子 主题:从源码安装tomcat 6.0.18
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
作者 | 正文 | |||||||||||||||||||||||||||||||
发表时间:2012-02-23
最后修改:2012-03-26
从源码安装 tomcat 6.0.18注意事项: JDK 用 1.6 1 安装 Subversionl 下载地址: http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 l 当然,如果您想从 Eclipse 中直接导入 Tomcat 源代码,请从 http://subclipse.tigris.org/update_1.0.x 下载 Subversion 插件,即可导入 Tomcat 源代码。 l 安装完成后,请在 MS-DOS 窗口中键入 svn export help ,验证是否安装成功 2 下载 Tomcat6.0 的源代码l Tomcat 源代码的版本控制工具不是 CVS ,而是 Subversion , l 在 MS-DOS 下键入:
这个命令的意思是把 Tomcat6.0.18 的源代码从 Subversion 库中导入到本机的 G:\tomcat_6.0.18\src 目录, l 下面是源代码的目录结构,从这个目录结构中,我们可以看出该项目的开发者使用的 IDE 是 Eclipse ,因为我们看到了熟悉的 .project 及 .classpath 文件。
3 安装 Ant请从 http://ant.apache.org/bindownload.cgi 处下载并安装 4 下载 依赖项目
l Tomcat 以 Ant 作为编译工具 l 修改 build.properties 找到 Tomcat 的源代码中的 build.properties.default 文件,将该文件复制到 build.properties , 然后打开 build.properties ,找到下面这行: base.path=/usr/share/java 将它改为: base.path= G:/tomcat_6.0.18/src/share
在 Tomcat 编译过程中, Ant 会让我们下载一些必要的依赖项目, base.path 目录就是用来保存这些项目文件的,我们可以将这个属性指向一个已经存在的目录。 l 修改完 base.path 后,我们回到 MS-DOS 窗口,切换到 Tomcat 源代码所在目录,然后运行 ant download 命令
一分钟未到, Ant 就告诉我们一个错误并提示我们编译失败,就是找不到 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://mirror.calvin.edu/eclipse/downloads/drops/R-3.2-200606291905/eclipse-JDT-3.2.zip
。我们
打开
刚才的build.properties
文件,将其
34
行修改为:
Tomcat 6.0.0 需要改这个,Tomcat 6.0.18 不需要改这个选项了 l 修改保存build.properties 文件后,重新开始ant download 任务。 这次我们等的时间较长,因为 eclipse-JDT-3.2.zip 大约有19M ,下载需要一段时间。 编译成功,虽然编译器给出几个警告。
l
这时我们可发现刚才创建的base.path
目录(G:\tomcat_6.0.18\src\share
)中已经下载了6
个依赖项目,它们都是Tomcat
编译所必须的。 l 配置代理修改 build.properties 文件:添加如下内容 proxy.host=192.168.0.1 proxy.port=808 proxy.use=on
5 编译请在MS-DOS 窗口内键入ant 并回车,
Ant 将在2 分钟内编译1000 多个源文件并将Tomcat 部署到output 目录。 编译顺利完成后,请打开Tomcat 的源代码目录,会发现多了一个output 目录,这是Ant 的编译后的输出目录。
6 运行 tomcat请打开Tomcat 源代码的output\build\bin 子目录,双击startup.bat 文件,我们即可成功启动Tomcat6.0 ,此时我们的编译工作就算顺利完成了。
7 导入源代码到 Eclipse7.1 新建一个 Java 项目请打开Eclipse ,新建一个Java 项目,请选择 “ Create project from existing source ” , 并在Directory 文本框内填入我们刚才下载的Tomcat 源代码目录(i.e. G:\tomcat_6.0.18\src) ,然后点击 “ Next ” 直至结束。 7.2 指定库文件我们将会看到Eclipse 拒绝编译,这是因为Eclipse 找不到该项目指定的库文件。请右击该项目,在弹出菜单中选择 “ Properties ” => “ Libraries ” ,然后删除两个以TOMCAT_LIBS 开头的两个库文件,只保留一个JRE 库文件,然后点击 “ OK ” 按钮,这时Eclipse 开始编译Tomcat 源代码,但是发现一堆错误,这是因为我们没有为该项目添加编译所必须的Jar 包。
准备好 Tomcat 项目所必须的 jar 文件,其实,刚才我们运行 ant download 任务时,已经下载过这些 jar 文件包。
当我们准备好这些 jar 文件后,将这些文件拷贝到某一目录(比如说 G:\tomcat_6.0.18\tomcat_lib 目录),
然后在 Eclipse 中新建一个 User Libraries ,我们将这个新建的 User Libraries 命名为 TOMCAT_LIBS ,并把这些文件加到 TOMCAT_LIBS 。然后将我们新建的 TOMCAT_LIBS 添加到 Tomcat6 项目。另外,别忘了把 JUnit 库也加到 Tomcat6 项目。这时 Eclipse 开始重新编译,编译过程顺利通过,所有错误均消失,此时 Tomcat6 项目的目录结构如下:
7.3 把 test 目录也加入到源代码中方法是在 Eclipse 中右击” test ”目录,然后在弹出菜单中选择“ Build path ” => ” Use as Source Folder ”,之后我们会看到 test 目录上就多了个源代码的符号。
8 在 Eclipse 中运行 Tomcat 。请找到 Tomcat 的启动主类 org.apache.catalina.startup.Bootstrap ,右击这个类,在弹出菜单中选择“ Run As …” => ” Open Run Dialog …”,然后在弹出的“ Run ”窗口中填入程序运行参数“ start ”和 JVM 运行参数 catalina.home ,
程序运行参数 : start JVM 运行参数 : -Dcatalina.home="G:\tomcat_6.0.18\src"
然后点击“ Run ”按钮,我们将会看到 Tomcat 正常启动。恭喜,咱们的 Tomcat 源码已经成功导入 Eclipse ,这时,
9 调试 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
界面,因为该方法不再执行。
10 其他JDK 版本引起的问题报如下错误:
[javac] C:\tomcat_6.0.18\src\share\tomcat6-deps\dbcp\src\java\org\apache\tom cat\dbcp\dbcp\datasources\PerUserPoolDataSource.java:52: org.apache.tomcat.dbcp. dbcp.datasources.PerUserPoolDataSource 不是抽象的,并且未覆盖 java.sql.Wrapper 中的抽象方法 isWrapperFor(java.lang.Class<?>) 这是JDK 版本1.6 造成的。需要安装JDK 版本1.5. 安装1.5 之后,原来的1.6 不必卸载, 为了把两个版本的JDK 区别开,可以键入如下命令 set path=C:\Program Files\Java\jdk1.5.0_06\bin set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_06
还有一点很有意思。 Tomcat6 以前版本的源代码分散在好几个子项目中,他们分别叫做jakarta-servletapi-5 ,jakarta-tomcat-5 ,jakarta-tomcat-catalina ,jakarta-tomcat-connectors 和jakarta-tomcat-jasper ,我觉得Tomcat 的开发者可能嫌这样做太麻烦了,所以Tomcat6 版本中将这些子项目都合并在一起了。但是,这种做法不利于我们阅读理解源代码。 文章出处: http://www.diybl.com/course/4_webprogram/jsp/jsp_js/2008313/104405_5.html
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
||||||||||||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||||||||||||
发表时间:2012-02-23
这个不累吗
|
||||||||||||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||||||||||||
发表时间:2012-03-07
引用 l 安装完成后,请在 MS-DOS 窗口中键入 svn export help ,验证是否安装成功
这个在 Subversion for Win32, version 1.6.6 上测试过 应该是svn help export |
||||||||||||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||||||||||||
发表时间:2012-03-21
挺有用的,十分感谢
|
||||||||||||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||||||||||||
发表时间:2012-04-16
mark下,弄成功了。
|
||||||||||||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||||||||||||
发表时间:2012-04-16
我是自己写ant编译的,否则改起来不方便
|
||||||||||||||||||||||||||||||||
返回顶楼 | ||||||||||||||||||||||||||||||||
浏览 3955 次