• tomcat源码导入eclipse步骤


    1. 获取源代码

       方式一:从官网http://tomcat.apache.org/download-70.cgi 直接下载,官网提供了Binary 和 Source Code两种下载方式,要研究tomcat源代码,选择source code 方式下载

       方式二:利用svn获取源代码,先安装svn,再新建目录tomcat7, 接着在目录里执行以下命令

    1. 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时报错:
      
    1. BUILD FAILED build.xml:2361: The following error occurred while executing this line:  
    2. BUILD FAILED build.xml:2449: Compile failed; see the compiler error output for details.  
    查看编译的错误日志为:
    1.  build-tomcat-dbcp:  
    2.      [copy] Copying 64 files to E:usrsharejava omcat7-depsdbcp  
    3.      [move] Moving 64 files to E:usrsharejava omcat7-depsdbcpsrcjavaorgapache omcatdbcp  
    4.     [javac] Compiling 64 source files to E:usrsharejava omcat7-depsdbcpclasses  
    5.     [javac] warning: [options] bootstrap class path not set in conjunction with -source 1.6  
    6.     [javac] E:usrsharejava omcat7-depsdbcpsrcjavaorgapache omcatdbcpdbcpBasicDataSource.java:53: error: Bas  
    7. icDataSource is not abstract and does not override abstract method getParentLogger() in CommonDataSource  
    8.     [javac] public class BasicDataSource implements DataSource {  
    9.     [javac]        ^  
    10.     [javac] E:usrsharejava omcat7-depsdbcpsrcjavaorgapache omcatdbcpdbcpDelegatingStatement.java:46: error:  
    11.  DelegatingStatement is not abstract and does not override abstract method isCloseOnCompletion() in Statement  
    12.     [javac] public class DelegatingStatement extends AbandonedTrace implements Statement {  
    13.     [javac]        ^  
    14.     [javac] E:usrsharejava omcat7-depsdbcpsrcjavaorgapache omcatdbcpdbcpDelegatingPreparedStatement.java:57  
    15. : error: DelegatingPreparedStatement is not abstract and does not override abstract method isCloseOnCompletion() in Stat  
    16. ement  
    根据日志错误推测,依赖的dbcp相关的jar版本不对。本机安装的jdk版本是1.7的,于是在本机又装了一个1.6的jdk,并修改相关环境变量让JAVA_HOME指向jdk 1.6目录。再次执行ant ide-eclipse得到了
     BUILD SUCCESSFUL
    Total time: 2 minutes 57 seconds

    也注意到 build-tomcat-dbcp的构建日志更新为:
    1. build-tomcat-dbcp:  
    2.      [copy] Copying 64 files to E:usrsharejava omcat7-depsdbcp  
    3.      [move] Moving 64 files to E:usrsharejava omcat7-depsdbcpsrcjavaorgapache omcatdbcp  
    4.     [javac] Compiling 64 source files to E:usrsharejava omcat7-depsdbcpclasses  
    5.     [javac] 注意:某些输入文件使用或覆盖了已过时的 API。  
    6.     [javac] 注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。  
    7.     [javac] 注意:某些输入文件使用了未经检查或不安全的操作。  
    8.     [javac] 注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。  
    9.       [jar] Building jar: E:usrsharejava omcat7-depsdbcp omcat-dbcp.jar  
    10.       [jar] Building jar: E:usrsharejava omcat7-depsdbcp omcat-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依然有错,无法识别
    1. import javax.xml.rpc.Service;  
    2. import javax.xml.rpc.ServiceException;  
    3. import javax.wsdl.Definition;  
    4. import javax.wsdl.Port;  
    5. import javax.wsdl.extensions.ExtensibilityElement;  
    6. import javax.wsdl.extensions.soap.SOAPAddress;  
    7. import javax.wsdl.factory.WSDLFactory;  
    8. 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 中的第四步即可
  • 相关阅读:
    MYSQL索引优化法则
    关于String对象到底占多少字节?
    类加载的时机
    HotSpot 虚拟机对象探秘
    JVM 内存结构
    Tomcat10-记录踩坑
    笔记 | 吴恩达新书《Machine Learning Yearning》
    图像分割论文 | DRN膨胀残差网络 | CVPR2017
    除了边缘场景,你还能在哪里使用K3s?
    基础指南:如何在K3s中配置Traefik?
  • 原文地址:https://www.cnblogs.com/zheh/p/4374088.html
Copyright © 2020-2023  润新知