码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Tomcat 9.0.x 源码编译


    文章目录

    • 一、克隆源码
    • 二、构建 Maven
      • 1)在项目根目录中新建 pom.xml 文件
      • 2)然后 Add Maven Projects
    • 三、在目录中增加 home 目录
    • 四、增加启动配置
    • 五、其它问题
      • 1)控制台乱码
        • 解决
      • 2)启动后访问 localhost:8080 报错
        • 解决

    一、克隆源码

    1. github搜索Tomcat源码
    2. fock到自己仓库,方便后续提交修改
    3. 如果嫌 github 慢,可以上 gitee 将 github 的仓库同步过来
    4. git clone
    5. checkout 9.0.x 的分支,最好自己新建一个分支,避免污染原分支

    二、构建 Maven

    1)在项目根目录中新建 pom.xml 文件

    在这里插入图片描述

    
    <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.0modelVersion>
      <groupId>org.apache.tomcatgroupId>
      <artifactId>tomcat9.0.xartifactId>
      <name>tomcat-9.0.xname>
      <version>9.0.xversion>
    
      <dependencies>
        <dependency>
          <groupId>junitgroupId>
          <artifactId>junitartifactId>
          <version>4.13.2version>
          <scope>testscope>
        dependency>
    
        <dependency>
          <groupId>org.easymockgroupId>
          <artifactId>easymockartifactId>
          <version>4.3version>
        dependency>
    
        <dependency>
          <groupId>org.apache.antgroupId>
          <artifactId>antartifactId>
          <version>1.9.5version>
        dependency>
    
        <dependency>
          <groupId>javax.xml.rpcgroupId>
          <artifactId>javax.xml.rpc-apiartifactId>
          <version>1.1version>
        dependency>
    
        <dependency>
          <groupId>wsdl4jgroupId>
          <artifactId>wsdl4jartifactId>
          <version>1.6.2version>
        dependency>
    
        
        <dependency>
          <groupId>org.eclipse.jdtgroupId>
          <artifactId>ecjartifactId>
          <version>3.26.0version>
        dependency>
    
        
        <dependency>
          <groupId>biz.aQute.bndgroupId>
          <artifactId>biz.aQute.bndlibartifactId>
          <version>6.4.0version>
        dependency>
    
    
      dependencies>
    
      <build>
        <finalName>Tomcat8.5.55finalName>
        <sourceDirectory>javasourceDirectory>
        <resources>
          <resource>
            <directory>javadirectory>
          resource>
        resources>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.pluginsgroupId>
            <artifactId>maven-compiler-pluginartifactId>
            <version>3.1version>
            <configuration>
              <encoding>UTF-8encoding>
              <source>1.8source>
              <target>1.8target>
            configuration>
          plugin>
        plugins>
      build>
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82

    2)然后 Add Maven Projects

    在这里插入图片描述

    三、在目录中增加 home 目录

    将外面的 conf 和 webapps 复制到 home 目录中,webapps 目录中只需保留 ROOT 目录即可

    这样做的好处:

    • 统一管理
    • 避免污染原文件

    在这里插入图片描述

    四、增加启动配置

    在这里插入图片描述

    • JRE:JDK 8

    • Main Class:org.apache.catalina.startup.Bootstrap

    • Add VM options:

      -Dcatalina.base=/Users/mac/IdeaProjects/tomcat-9.0.x/home -Dcatalina.home=/Users/mac/IdeaProjects/tomcat-9.0.x/home -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/Users/mac/IdeaProjects/tomcat-9.0.x/conf/logging.properties -Dfile.encoding=utf-8
      
      • 1

      注意: 上面的 /Users/mac/IdeaProjects/tomcat-9.0.x/ 的目录是我本地项目的目录,需要根据自己的实际目录来修改

    五、其它问题

    1)控制台乱码

    在这里插入图片描述

    解决

    在方法 org.apache.tomcat.util.res.StringManager#getString(java.lang.String) 中增加如下代码:

    // 日志打印时会读取系统默认的语言,将原本的 iso-8859-1 转换成 utf-8
    if (str != null) {
        try {
            str = new String(str.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
        } catch (Exception e) {
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述
    在这里插入图片描述

    2)启动后访问 localhost:8080 报错

    在这里插入图片描述

    解决

    在方法 org.apache.catalina.startup.ContextConfig#configureStart 中添加

    context.addServletContainerInitializer(new JasperInitializer(), null);
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    Linux-相关操作
    数据的距离度量 三、Jaccard距离,卡方相似度,相关系数,Dice系数
    0基础学习VR全景平台篇第113篇:矫正拉直全景图 - PTGui Pro教程
    CentOS 7 安装新版本的Nginx
    基于阿基米德优化算法优化概率神经网络PNN的分类预测 - 附代码
    基于前后端分离的博客系统
    【Android】使用 adb 命令行工具结合 pm列出 Android 设备上已安装应用的应用名称和包名
    最短路径——通过Dynamo批量创建行进路线
    STK与MATLAB互联——仿真导航卫星与地面用户间距离和仰角参数
    必知必会的Java多线程可算是被讲透彻了,让我们一起深入浅出多线程!
  • 原文地址:https://blog.csdn.net/zyx1260168395/article/details/134257066
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号