Tomcat源码导入idea的方法

目录
  • 1.下载tomcat代码
  • 2.下载之后的目录结构
  • 3.源码使用ant构建(这里改用pom)
  • 4.问题解决
    • 4.1控制台乱码
    • 4.2访问8080报错jsp等class找不到
  • 5.访问localhost:8080

1.下载tomcat代码

本文选择9.0分支,此版本servlet还是javax开头的 github

2.下载之后的目录结构

3.源码使用ant构建(这里改用pom)

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat</artifactId>
  <name>tomcat</name>
  <version>9.0.19</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant</artifactId>
      <version>1.10.11</version>
    </dependency>
    <dependency>
      <groupId>wsdl4j</groupId>
      <artifactId>wsdl4j</artifactId>
      <version>1.6.3</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.xml.soap/javax.xml.soap-api -->
    <dependency>
      <groupId>javax.xml.soap</groupId>
      <artifactId>javax.xml.soap-api</artifactId>
      <version>1.4.0</version>
    </dependency>

    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-jaxrpc_1.1_spec</artifactId>
      <version>2.1</version>
    </dependency>

    <dependency>
      <groupId>org.eclipse.jdt</groupId>
      <artifactId>ecj</artifactId>
      <version>3.17.0</version>
    </dependency>

    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <version>4.0.2</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>biz.aQute.bnd</groupId>
      <artifactId>biz.aQute.bndlib</artifactId>
      <version>5.2.0</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>com.unboundid</groupId>
      <artifactId>unboundid-ldapsdk</artifactId>
      <version>3.2.0</version>
    </dependency>
  </dependencies>

</project>

直接使用idea重新导入,jdk暂时选择1.8

4.问题解决

4.1控制台乱码

信息: 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
九月 29, 2021 3:52:17 上午 org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
警告: 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[149]毫秒。

九月 29, 2021 3:52:17乱码 修改conf/logging.properties的编码(现在默认utf-8,基本无修改) 警告: 使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花费了[149]毫秒 乱码

这里的乱码本质原因是properties文件乱码,tomcat采用系统的读取配置文件方式,使用的是URL.openStream,然后采用properties.load方法,这样会导致乱码

解决方案

把两个国际化文件读取重写Localizer、StringManager

4.2访问8080报错jsp等class找不到

org.apache.catalina.startup.ContextConfig#configureStart方法加一句代码
//TODO 手工加的
        context.addServletContainerInitializer(new JasperInitializer(), null);

5.访问localhost:8080

注意点,有其他编译选项发,jdk11-16可以直接注释
其他报错正常解决就行

到此这篇关于Tomcat源码导入idea的文章就介绍到这了,更多相关Tomcat源码导入idea内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Idea中tomcat启动源码调试进入到tomcat内部进行调试的方法

    使用idea开发工具调试代码的时候,如果是java的web项目,使用的是tomcat作为web容器,打断点debug调试跟踪,当跟踪到org.apache.catalina包下的时候,则无法进入,这是因为idea运行的tomcat是通过插件的方式集成的,tomcat里面的lib包不再项目的依赖路径中,所以不能跟踪进去 首先在自己项目中被tomcat回调的接口实现类中,标记一个断点信息,通过idea启动web项目,当出现如图所示的断点信息的时候,因为断点位置标记的是tomcat回调的接口类,所以按

  • 详解IDEA创建Tomcat8源码工程流程

    上一篇文章的产出,其实离不开网上各位大神们的辅助,正是通过他们的讲解,我才对Tomcat的结构有了更进一步的认识. 但在描述前后端交互的过程中,还有很多细节并没有描述到位,所以就有了研究Tomcat源码的想法. 而在配置Tomcat源码工程的过程中,摸摸爬爬两个多小时,总算是成功启动了. 故撰写此篇博文,授之以渔. 准备工作 1.apache-tomcat-8.5.32-src源码包,官网下载并解压即可: 2.apache-ant-1.10.5(用的最新版)下载并安装:Tomcat源码默认采用的

  • Tomcat源码导入idea的方法

    目录 1.下载tomcat代码 2.下载之后的目录结构 3.源码使用ant构建(这里改用pom) 4.问题解决 4.1控制台乱码 4.2访问8080报错jsp等class找不到 5.访问localhost:8080 1.下载tomcat代码 本文选择9.0分支,此版本servlet还是javax开头的 github 2.下载之后的目录结构 3.源码使用ant构建(这里改用pom) <project xmlns="http://maven.apache.org/POM/4.0.0"

  • 解决Pycharm 导入其他文件夹源码的2种方法

    在pycharm中,当调用( import / from - import- )其他文件夹下的函数或模块,会发现编辑器无法识别( can not be reference),这是因为没有找到响应路径的原因,如何解决呢?? 方法1: import sys sys.path.append( ' ' ) notice: 但是,在编辑器上,还有会显示无法识别,虽然编译和运行可以通过. 而且,这些没法识别的方法无法实现超链接,没法 查看源码 方法2: File --- Setting --- Projec

  • Android源码导入AndroidStudio或IntelliJ IDEA的方法

    目录 一.前言 二.idegen使用方法 1. 全编AOSP 2. 编译生成idegen.jar 3. 生成IDE配置文件 4. 将工程导入到IDE 一.前言 经常和Android系统源代码(AOSP)打交道的人,如果要去修改系统源码,显然用SourceInsight.Notepad++.vim这些工具有些麻烦,并且想快速补全代码也做不到.我们可以用idegen来生成针对AndroidStudio或IntelliJ IDEA的Android系统源代码工程配置文件,它位于Android系统源代码工

  • Springboot 2使用外部Tomcat源码分析

    Springboot 使用外部 Tomcat 1.修改 pom.xml,改为打 war 包 <packaging>war</packaging> 2.将 Springboot 内置 tomcat 作用域改为provided <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifac

  • 一次tomcat源码启动控制台中文乱码的调试过程记录

    发现问题 今天准备学习下tomcat源码,于是从官网下载了tomcat的源码,导入到IDEA中,使用maven工具build完项目之后,启动项目,控制台打印了tomcat日志,但是中文都是乱码. 一开始我怀疑是IDEA的问题,于是在网上找了各种解决办法尝试.大致有这几种: 1.修改run/debug configurations,添加VM options参数:-Dfile.encoding=utf-8; 2.修改run/debug configurations,添加Enviroment vari

  • 如何将tomcat源码以maven方式运行

    前言 最近在分析tomcat的启动流程,虽然我们可以在idea中查看到tomcat的源代码,但是我们不能在上面做一些代码注释,这就会 非常的不方便,所以我们还是能在本地 运行一份源码,这样非常有利于我们分析源码 一.下载tomcat源码,选择tomcat-8.5.55版本 进入tomcat官网,点击左侧菜单栏Download对应的版本,下载源码 二.idea中创建项目 1.在idea中创建一个空白项目,名称为tomcat_study 2.打开项目源目录,将tomcat的源码解压到其中 3.创建文

  • Tomcat源码解析之Web请求与处理

    前言 Tomcat最全UML类图 Tomcat请求处理过程: Connector对象创建的时候,会创建Http11NioProtocol的ProtocolHandler,在Connector的startInteral方法中,会启动AbstractProtocol,AbstractProtocol启动NioEndPoint进行监听客户端的请求,EndPoint接受到客户端的请求之后,会交给Container去处理请求.请求从Engine开始经过的所有容器都含有责任链模式,每经过一个容器都会调用该容

  • Python 图形界面框架TkInter之在源码中找pack方法

    目录 一.HelloWorld看pack() 二.pack()方法分析 三.pack_configure()方法分析 四.Label的继承结构 五.查看pack()方法源码的收获 前言: tkinter提供了3种布局管理方式: 1.pack 2.grid 3.place 每种布局管理器都非常有用,根据不同的需求,选择对应的布局方式,每个控件都可以使用pack作为布局管理器,从源码中看下pack()在哪里? 一.HelloWorld看pack() import tkinter   my_windo

  • CloudStack SSVM启动条件源码阅读与问题解决方法

    CloudStack SSVM启动条件源码阅读与问题解决方法: 在CloudStack建立zone的时候,经常遇到SSVM不启动,或者根本就没有SSVM的情况,分析CloudStack日志,会发现有"Zone 1 is not ready to launch secondary storage VM yet"打印,意思是zone还未准备好启动SSVM. 通过查询CloudStack源代码,发现启动SSVM前有如下检查:         获取Zone里的template. select

  • jQuery源码解读之addClass()方法分析

    本文较为详细的分析了jQuery源码解读之addClass()方法.分享给大家供大家参考.具体分析如下: 给jQuery原型对象扩展addClass功能,jQuery.fn就是jQuery.prototype 复制代码 代码如下: jQuery.fn.extend({ /* 可以看出这是一个函数名叫addClass的插件方法. */     addClass: function( value ) {         var classes, elem, cur, clazz, j, finalV

随机推荐