设为首页 收藏本站
查看: 949|回复: 0

[经验分享] tomcat源码编译,调试

[复制链接]

尚未签到

发表于 2015-11-14 12:01:03 | 显示全部楼层 |阅读模式
参考资料:

http://tomcat.apache.org/tomcat-6.0-doc/building.html

http://blog.iyunv.com/huxin1/archive/2008/04/13/2289140.aspx

本次安装在基于myeclipse8.0,JDK1.5。tomcat源码是用subversion管理,首先要安装subversion插件。


1.安装subversionr插件

点击help-->software updates-->add/remove sofeware-->add-->

a.在search中输入subversion,会搜索出相应的subversion项,选1.6版本的安装

b.点击add,在name中输入你想要的名字如(subversion),在url中输入http://subclipse.tigris.org/update_1.6.x

然后一路下一步就可以安装好subversion的插件

2.检出tomcat项目

点击file-->import-->svn-->从SVN栓出项目-->创建新的资源库位置-->在url中输入http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk/,接着一路下一步就OK了

3.编译tomcat源码

tomcat源码是用ant编译的,这里就不介绍ant的安装了,大家去查下资料。

在这里可以使用myeclipse直接用ant来运行build.xml,也可以手动到tomcat项目目录下运行ant命令。

本人采用的是后者。

首先,编译时要依赖一些包,ant在执行过程中会去下载。

在build.properties.default文件中有相关的信息,首先我们将build.properties.default改名为build.properties,

找到base.path=/usr/share/java,这个路径是用来存放即将下载的文件的目录,因为我用windows操作系统,所以这个路径要改掉,如我这里使用base.path=E:/myeclipse8GA/workspace/tomcat6/share


然后,执行ant命令:ant download

执行这条命令可能会出错,因为build.properties文件中的某些下载地址己经失效了。

我在安装时就出现了这个问题,主要体现在jdt.loc=http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.3.1-200709211145/eclipse-JDT-3.3.1.zip

这个路径是我后来换上去的,最初的地址己经失效,但是我发现它下载的实在是太慢,于是在网上找了个地址,路径为http://archive.eclipse.org/eclipse/downloads/drops/R-3.2-200606291905 /download.php?dropFile=eclipse-JDT-3.2.zip,但是我将这个路径放到base.path后却不起作用,于是直接下载后,解压到E:/myeclipse8GA/workspace/tomcat6/share下面(ant下载好相关文件后,会将其解压)。切记是直接解压到当前文件夹,默认为eclipse文件夹。

重新执行ant download显示成功。


最后,直接执行ant命令,就会编译成功了。中间可能会报什么API过时之类的,但是影响不大。看其它文件,好像说用JDK1.6好像会有问题,具体没测试,没有发言权。


对于用myeclipse来编译的话,右击build.xml-->run as-->选择第二个ant build-->在target中选择download点击run,就会开始下载,时间可能有点长,因为jdt有19M,然后再右击build.xml-->run as 选择第一个ant build即可。就能完成编译了。

下面是下载完成后的目录结构:
DSC0000.gif
编译完成后,你会在tomcat项目目录下发现多出了一个output目录,下面有build与classes两个子目录,classes为类的字节码文件,build下面就跟正常tomcat安装后的目录一个样。
DSC0001.gif
4.除去多余的classpath引用

完成前面几步,刷新myeclipse中的tomcat项目,你会发现有个红叉,表示有错误存在。请右击该项目,在弹出菜单中选择 build path-->configue build path,然后删除两个以 TOMCAT_LIBS 开头的两个库文件,只保留一个 JRE 库文件,然后点击“ OK ”按钮

5.添加依赖包

tomcat源文件要依赖一些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子目录中拷贝)
6.启动tomcat

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


DSC0002.gif
点击run就能启动tomcat了。


7.段点调试

右击org.apache.catalina.startup.Bootstrap-->debug as -->java application,让tomcat以debug形式启动,

找到org.apache.jasper.compiler.Compiler 类,在 generateJava() 方法的第一行打一个断点,然后访问http://localhost:8080/examples/jsp/,点击页面中的execute,因为在页面内容不变的情况下,jsp页面不会重新编译,所以你第一次点击某个execute时,myeclipse进入debug模式,再点的时候却没反应了。

====================================================================================================


导入Tomcat的源代码,其实很简单,可是如果没有找到正确的方法,你会浪费大量的时间,我就是浪费了好多时间在配置编译环境上。最正确的办法是到Tomcat的官方网址去找到答案。
可以参考下边的连接,这个是关于Tomcat7的。http://tomcat.apache.org/tomcat-7.0-doc/building.html
1. 设置环境1.1 JDK1.6 or above JAVA_HOME1.2 Ant 1.8.1 or later ANT_HOME1.3 Check out the latest tomcat source code2. 为Eclipse编译工程cd ${tomcat.source}ant ide-eclipse[注] a. ${tomcat.source} 是你下载的源码在机器上的路径b. ant ide-eclipse: 这个过程会比较慢,因为会下载一些依赖的第三方jar,这些jar都会放到你在build.properties 中设置的 ${base.path} 所指向的路径
3. 设置Eclipse 环境 (Class-path Variables)设置TOMCAT_LIBS_BASE,ANT_HOMETOMCAT_LIBS_BASE 要指向 ${base.path}ANT_HOME 指向安装ant的目录就好了
4. 导入工程File -> Import and choose Existing Projects into Workspace
5. 编译问题往往我们在这时会遇到一些编译错误,这是因为我们Eclipse中JRE环境设置的不正确,需要调整5.1 Java Compiler, 需要 6.0 (1.6) 以上Window -> Preferences -> Java ->?Complier -> JDK Compliance -> 6.0 (1.6)5.2 Default JRE, 需要 1.6 以上Window -> Preferences -> Java -> Installed JREs -> jdk1.6当然,这个也可以在工程中设定,如果你还有其他的工程必须用以前的jdk版本的话。5.3 Eclipse 版本问题调整好Java Compiler 和 JRE 后,一般可以编译通过了,但是我就遇到了Eclipse版本问题,总有一个?compiler ArrayIndexOutofBoundaryException 的错误,后来更新了一下Eclipse,就好了,我用的Eclipse 版本是3.2的。我又用了Eclipse Galileo试着打开工程,就没有类似的问题。
6. 最周到的服务到了这里,您的工程应该就编译成功了。该想想怎么run, debug TOMCAT了,怎么设置啊?哈,最周到的服务来了,在 run(debug) ... -> Java Application 中,我们会看到已经有两个applications 了,分别叫做start-tomcat, stop-tomcat.
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-139117-1-1.html 上篇帖子: Ant 构建工具(从SVN下载项目 ,编译,到tomcat下运行项目) 下篇帖子: tomcat源码编译,调试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表