今天成功的导入,编译并运行了Tomcat源码,主要参考的下面三个文档,有的直接复制过来了,有的只写链接吧。它们中导入源码方式不同,有的也包括了编译过程中遇到的问题,要如何解决,以后如果再导入发现不行的话可以多参考参考:
1. http://jackycheng2007.iteye.com/blog/1477845
2. http://blog.csdn.net/cuidiwhere/article/details/12361425
3. http://zhoushu126.iteye.com/blog/1343718
第一篇:下载-编译-解决问题-运行(简明扼要)
准备好好研究学习一下tomcat 7 的源代码,那么第一步就是下载,导入eclipse并且运行。
1. 下载源代码
tomcat 7 的源代码在svn上,所以你需要svn的安装。创建一个目录tomcat7,并用命令行进入这个目录,之后用下面的命令下载
- svn co http://svn.apache.org/repos/asf/tomcat/tc7.0.x/tags/TOMCAT_7_0_27/ ./
这里我下载的是tag里面的,你也可以下载别的branch,比如trunk,但是我觉得tag的是比较稳定的。
2. 创建eclipse项目
tomcat 7 是用ant来构建和管理的,所以你需要安装ant。在tomcat7目录下执行:
- ant ide-eclipse
其实,你看一下build.xml就知道它就是copy了两个现成的文件
- <target name="ide-eclipse" depends="deploy, extras-webservices-prepare"
- description="Prepares the source tree to be built in Eclipse">
- <!-- Copy the sample project files into the root directory -->
- <copy file="${tomcat.home}/res/ide-support/eclipse/eclipse.project" tofile="${tomcat.home}/.project"/>
- <copy file="${tomcat.home}/res/ide-support/eclipse/eclipse.classpath" tofile="${tomcat.home}/.classpath"/>
- <echo>Eclipse project files created.
- Read the Building page on the Apache Tomcat documentation site for details on how to configure your Eclipse workplace.</echo>
- </target>
这样你就可以在eclipse里面导入这个tomcat 项目了
3. 在eclipse里面添加lib变量
导入项目以后你会发现有几个错误导致不能编译,其实是缺少lib变量:
ANT_HOME, 指向ant的安装目录
TOMCAT_LIBS_BASE,指向依赖库的位置,如果你还没有在tomcat7下执行:
- ant
来build和deploy这个项目,就先执行它。
这样它就会下载需要的lib。
如果你不确定放到哪里了,你可以搜索ecj-3.7.2,把它的上级目录指定给这个变量就好了。
添加好之后,eclipse会提示你重新build项目,当然要。之后就会没有错误了。
4. 运行
右击这个tomcat-7.0.x项目,选择run as / Java Application,它会自动搜索项目中的所有main函数,你选择org.apache.catalina.startup.Bootstrap的main函数就是。 选择好了之后,你也许会看到有tomcat-start和tomcat-stop两个启动项让你选择,其实这个是tomcat为你准备好的launch文件,在tomcat7\res\ide-support\eclipse下面有两个launch文件。也就是说你直接可以在run configuration里面找到这两个启动配置,从而加以利用。在run configuration的配置里面的Common tab里面你还可以设置选中debug,从而你可以在debug菜单下显示它了。
问题:为什么这个函数的注释写仅仅为了测试:
- /**
- * Main method, used for testing only.
- *
- * @param args Command line arguments to be processed
- */
- public static void main(String args[]) {
5. 启动好以后你可以打开下面的网址:
- http://localhost:8080/
你会看到欢迎页面,大功告成!你可以在main里面设置断点debug了。
6. 配置更为详细的log
看更为详细的log有利于我们准确地跟踪tomcat的执行过程。tomcat的日志框架允许我们配置第三方的log系统实现,比如log4j。默认情况下它使用java.util.logging.
需要两步来实现更为详细的log的配置
1)运行参数,加上
- -Djava.util.logging.config.file=${project_loc:/tomcat-7.0.x}/conf/logging.properties
2)修改log level的配置,把FINE,改成FINEST。并加入:
- org.apache.catalina.level = FINEST
第二篇:包括了许多的问题的处理方法,参考了第一篇
本文主要参考这篇博客 http://jackycheng2007.iteye.com/blog/1477845,但是整个过程遇到了另外的问题,特记录如下
1. 获取源代码
方式一:从官网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
2. 将源码导入eclipse
- 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
Total time: 2 minutes 57 seconds
- 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
3. 在build path里添加jar包,解决编译问题
- 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;
4. 运行
第三篇:解压的SRC也行?
原文:http://www.cnblogs.com/huangfox/archive/2011/10/20/2218970.html
想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug)。
这里参考了网上一些资料,将自己操作过程记个流水账。
准备:
1.Tomcat源码下载
这个里下载tomcat-6.0.33源码。
2.ant安装,用于编译tomcat的源码。
ant下载解压后将其bin添加到系统环境path中。
3.IDE——选用Eclipse3.7。
=================================
第一步:
解压Tomcat源码,例如解压到D:\tomcat\apache-tomcat-6.0.33-src。
第二步:
2.1)使用ant编译tomcat源码,在编译之前需要下载相关的依赖项目。我们并不知道编译需要哪些依赖项目,怎么办?
让ant来帮忙吧!我们只需要准备一个存放这些依赖项目的地方,例如d:\tomcat\basepath。
2.2)要让ant工作起来,我们还要将apache-tomcat-6.0.33-src文件夹中的build.properties.default重命名为build.properties,
并且打开它,修改base.path=d:\tomcat\basepath。
2.3)下载依赖项目,进入命令控制台,进入目录D:\tomcat\apache-tomcat-6.0.33-src,执行命令:ant download。
2.4)等依赖项目下载好后,就可以编译tomcat了。执行命令:ant。当编译完成后,我们可以查看目录D:\tomcat\apache-tomcat-6.0.33-src,
可以发现里面多了一个文件夹:output。
output文件夹的结构如下:
我们会发现这个结构和从安装包里解压出来的tomcat结构一致。
进入bin,启动tomcat成功,就说明——ant编译tomcat成功了!
=====================================
将tomcat源码导入eclipse。
第一步:
在eclipse里新建一个java项目,例如:tomcat6。
第二步:
import->file system
在From directory选择tomcat源码,选择java和test(如果你需要测试的话选择test),如下图:
在into folder中选择我们刚新建的tomcat6,finish。
note:将java、test设置成source folder,java build path ->Source->Add folder...->选择java和test。
现在项目结构如下图所示:
第三部:导入jar包。
上面那些不爽的红叉是因为缺少jar的原因,我们现在需要那些jar包呢?
test需要junit.jar,这个直接用eclipse里面的即可。
java中需要:
- ant.jar
- jaxrpc.jar
- org.eclipse.jdt.core_3.3.1.v_780_R33x.jar
- wsdl4j-1.5.1.jar
导入后就清爽了!
第四步:
在eclipse中启动tomcat。
找到类:org.apache.catalina.startup包中的Bootstrap类。
run as:在Arguments的VM arguments中设置
-Dcatalina.home="d:\output\build"
然后就可以启动了!
==========================================
问题:
为什么要设置-Dcatalina.home="d:\output\build"?
首先说明output是什么——它就是ant编译出来的output文件夹,大家可以试试删除里面的东西看还是否可以成功启动。
如果不配置这个参数又会发生什么情况呢?删除-Dcatalina.home="d:\output\build",报错:
2011-10-20 14:49:35 org.apache.catalina.startup.ClassLoaderFactory validateFile
警告: Problem with directory [D:\myWorkSpace\tomcat6\lib], exists: [false], isDirectory: [false], canRead: [false]
2011-10-20 14:49:35 org.apache.catalina.startup.ClassLoaderFactory validateFile
警告: Problem with directory [D:\myWorkSpace\tomcat6\lib], exists: [false], isDirectory: [false], canRead: [false]
2011-10-20 14:49:35 org.apache.catalina.startup.Catalina load
警告: Can't load server.xml from D:\myWorkSpace\tomcat6\conf\server.xml
2011-10-20 14:49:35 org.apache.catalina.startup.Catalina load
警告: Can't load server.xml from D:\myWorkSpace\tomcat6\conf\server.xml
2011-10-20 14:49:35 org.apache.catalina.startup.Catalina start
严重: Cannot start server. Server instance is not configured.
从中可以看出在项目的根目录下没有lib文件夹,没有conf文件夹,conf中没有server.xml,从而不能实例化server。
那么按照他的提示做,在启动就ok了!
相关推荐
在Eclipse中运行Tomcat源码前,确保已正确配置了Eclipse的Java和Web开发工具(如JDT和WTP)。导入源码后,需要设置项目的构建路径,确保所有依赖项被正确引入。描述中提到的"依赖添加完毕",意味着源码已经包含了...
Tomcat源码直接导入eclipse
本文将探讨如何将Tomcat7.0源码导入Eclipse,并进行本地运行,以实现高效的学习和调试。 首先,我们关注的是"Tomcat7.0源码",它是Apache软件基金会的项目,包含了处理HTTP请求、管理Web应用程序、执行Servlet和JSP...
将Tomcat的源码导入到Eclipse工程中,对于开发者来说,是深入理解Tomcat工作原理、调试和定制化开发的重要步骤。以下将详细讲解如何进行这个过程以及相关的知识点。 首先,我们需要获取Tomcat的源码。Tomcat的源码...
【标题】"Tomcat源码导入MyEclipse"是一个针对Java开发者的重要实践操作,它涉及到两个关键组件:Tomcat服务器和MyEclipse集成开发环境。Tomcat是Apache软件基金会的一个开源项目,它作为Servlet和JavaServer Pages...
NULL 博文链接:https://naouguhtaeyeti.iteye.com/blog/1596775
tomcat8源码研究, 直接导入eclipse即可使用,无bug,
本篇将详细讲解如何在Eclipse中导入并配置Tomcat服务器,以便进行Web应用的开发和调试。 首先,确保你已经下载了Eclipse IDE和Tomcat服务器。Eclipse可以从官方网站免费下载,Tomcat可以从Apache Software ...
tomcat-7.0.x源码,直接导入eclipse就行了,依赖的jar包已经下载好了,如果差一个ant.jar,你直接定位到ant安装目录下lib包下
此代码可以导入Eclipse中,运行tomcat7源码,包含tomcat7运行时所要添加的jar包,运行环境JDK1.7,导入即可立即运行使用
在Eclipse中,开发者可以通过导入“Existing Projects into Workspace”来加载Tomcat源码。然后,可以利用Eclipse的强大功能,如代码跳转、调试、重构等,方便地探索和理解源码。 在Tomcat7.0.42中,主要包含以下几...
4. **运行配置**:创建一个运行配置,指定Tomcat的主类`org.apache.catalina.startup.Bootstrap`,并配置相关参数。 通过阅读和分析源码,你可以了解Tomcat如何加载web应用程序,如何处理请求,以及如何管理线程池...
【Tomcat源码学习(一) 源码编译和导入Eclipse】 在深入学习Tomcat源码之前,首先需要获取源码并将其配置到开发环境中,这通常涉及到源码下载、编译以及在集成开发环境(IDE)中导入项目。本篇文章将指导初学者完成...
tomcat7_0_29官方源码已编译导入eclipse可运行,已用ant编译过了 ,导入即可,不会报错,运行的话,请看里面的readme.txt
为了在Eclipse中导入和编译Tomcat源码,我们需要设置合适的构建路径,这通常包括添加必要的库和JAR依赖。 3. **Ant**:Ant是Apache的构建工具,类似于Java世界的Makefile。在导入Tomcat源码时,Ant的配置文件...
通过以上步骤,你可以将Tomcat 7.0.70的源码导入Eclipse进行学习和开发。源码分析有助于提升对Web服务器内部运作的理解,而Eclipse作为开发工具,能提供便利的开发和调试环境,帮助开发者更高效地探索和改进Tomcat。
7. **Eclipse集成**:在Eclipse中导入Tomcat源码,可以方便地进行调试、代码分析和自定义修改。这需要配置Tomcat插件,设置源代码路径,以及正确配置项目的构建路径。 8. **部署与调试**:在Eclipse中如何部署Web...
要在Eclipse中跟踪运行Tomcat源码,首先你需要下载Tomcat的源码包,并将其导入到Eclipse项目中。然后,将这些JAR包添加到项目的类路径中。你可以通过以下步骤操作: 1. 在Eclipse中右键点击项目,选择“属性”...
在Eclipse中导入apache-tomcat-6.0.41-src源代码项目后,首先需要配置构建路径。确保包含必要的JDK库,如Javax.servlet-api和Jasper编译所需的JSP API。然后,可以使用Eclipse的构建工具或者手动执行Ant脚本来编译源...