tomcat源码下载并导入eclipse
2016-01-13 21:47
543 查看
本文主要参考这篇博客 http://jackycheng2007.iteye.com/blog/1477845,但是整个过程遇到了另外的问题,特记录如下
方式二:利用svn获取源代码,先安装svn,再新建目录tomcat7, 接着在目录里执行以下命令
[java] view
plaincopy
svn co http://svn.apache.org/repos/asf/tomcat/tc7.0.x/tags/TOMCAT_7_0_35/ ./
tags目录下有不同版本的tomcat 源码,这里下载的版本是7.0.35
执行ant ide-eclipse时报错:
[java] view
plaincopy
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.
查看编译的错误日志为:
[java] view
plaincopy
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
根据日志错误推测,依赖的dbcp相关的jar版本不对。本机安装的jdk版本是1.7的,于是在本机又装了一个1.6的jdk,并修改相关环境变量让JAVA_HOME指向jdk 1.6目录。(然而修改JAVA_HOME无效,这是因为jdk1.7把java.exe拷贝一份在c:\windows\system32,而这个路径在path是第1个,暂时剪切此文件,即可生效)再次执行ant
ide-eclipse得到了
BUILD SUCCESSFUL
Total time: 2 minutes 57 seconds
也注意到 build-tomcat-dbcp的构建日志更新为:
[java] view
plaincopy
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
因此,该问题可总结为:tomcat源码依赖的jdk版本为1.6及其以下,使用jdk1.7会导致构建失败。
遇到的另外问题,org.apache.naming.factory.webservices包下的两个类ServiceProxy,ServiceRefFactory依然有错,无法识别
[java] view
plaincopy
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;
这些类。本机依然缺少jar包,百度了下发现缺少一个web service的开发工具包 axis-bin-1_4.zip。 下载后,添加到build path里解决。
题外话:ant没有maven用起来方便,maven可以管理依赖的jar,会自动从maven仓库里下载依赖,无需手动下载jar和添加build path
1. 获取源代码
方式一:从官网http://tomcat.apache.org/download-70.cgi 直接下载,官网提供了Binary 和 Source Code两种下载方式,要研究tomcat源代码,选择source code 方式下载方式二:利用svn获取源代码,先安装svn,再新建目录tomcat7, 接着在目录里执行以下命令
[java] view
plaincopy
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
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.
查看编译的错误日志为:
[java] view
plaincopy
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
根据日志错误推测,依赖的dbcp相关的jar版本不对。本机安装的jdk版本是1.7的,于是在本机又装了一个1.6的jdk,并修改相关环境变量让JAVA_HOME指向jdk 1.6目录。(然而修改JAVA_HOME无效,这是因为jdk1.7把java.exe拷贝一份在c:\windows\system32,而这个路径在path是第1个,暂时剪切此文件,即可生效)再次执行ant
ide-eclipse得到了
BUILD SUCCESSFUL
Total time: 2 minutes 57 seconds
也注意到 build-tomcat-dbcp的构建日志更新为:
[java] view
plaincopy
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
因此,该问题可总结为: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
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;
这些类。本机依然缺少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 中的第四步即可相关文章推荐
- Apatch Tomcat8.0安装, 部署, 使用
- 关于tomcat7服务下面js无法获取JSESSIONID的cookie信息
- 005_Eclipse配置Tomcat
- Ubuntu下设置tomcat开启自启动
- web应用发布到tomcat图片无法显示的问题
- 同一台电脑上安装两个tomcat服务器
- IDea开启tomcat的时候报堆栈溢出(heap over)解决办法
- nginx+tomcat动静态资源分离
- MyEclipse启动tomcat出现java.lang.OutOfMemoryError: PermGen space 的解决方案
- Jetty与Tomcat的区别 转
- eclipse中启动Tomcat发布工程,工程的发布目录
- tomcat 启动一段时间后 出问题。 无错误日志,页面卡住
- tomcat修改默认打开项目
- 解决 PermGen space Tomcat内存设置
- Tomcat 发布web项目
- eclipse:不能在tomcat里添加一个项目的解决方法
- tomcat 日志用log4j管理
- eclipse Maven构建的project无法公布lib到tomcat的解决方法
- 安装配置jdk和tomcat
- [solr] - IKAnalyzer 分词加入