IDEA中搭建Tomcat源码学习环境

步骤

  1. 下载好tomcat源码包,并解压。(本文用的是8.5.35版本)
  2. 重命名解压后的文件夹。(本文后续称该文件夹为tomcat)
  3. tomcat 文件夹中添加新的pom.xml文件,文件内容如下:



  4.0.0
  com.example.tomcat
  Tomcat
  Tomcat
  1.0

  
    
      
        org.apache.maven.plugins
        maven-compiler-plugin
        2.3
        
          UTF-8
          1.8
          1.8
        
      
    
  

  
    
      junit
      junit
      4.12
      test
    
    
      org.easymock
      easymock
      3.4
    
    
      ant
      ant
      1.7.0
    
    
      wsdl4j
      wsdl4j
      1.6.2
    
    
      javax.xml
      jaxrpc
      1.1
    
    
      org.eclipse.jdt.core.compiler
      ecj
      4.5.1
    
  

4.将java文件夹标记为Sources Root。


5.tomcat文件夹下,创建logs、lib、work文件夹,删除了test文件夹,最终的文件目录结构如下:


  1. 找到org.apache.catalina.startup.Bootstrap这个类,运行它,则完成了tomcat服务器本地启动。

7.本地启动后,去浏览器访问http://localhost:8080时发现出现异常:

Exception

org.apache.jasper.JasperException: java.lang.NullPointerException
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:598)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:514)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
Root Cause

java.lang.NullPointerException
    org.apache.jsp.index_jsp._jspService(index_jsp.java:427)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)

其实这是由于源码启动的过程中,没有设置相关的JSP处理器导致的,解决的方法可以在org.apache.catalina.startup.ContextConfig类中的configureStart方法中添加context.addServletContainerInitializer(new JasperInitializer(), null);即可,如图:


8.添加完成后重新启动,可正常去浏览器中访问http://localhost:8080。

至此,tomcat源码的调试环境搭建完成!

你可能感兴趣的:(IDEA中搭建Tomcat源码学习环境)