当前位置: 首页 > news >正文

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 文件

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<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>tomcat9.0.x</artifactId><name>tomcat-9.0.x</name><version>9.0.x</version><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency><dependency><groupId>org.easymock</groupId><artifactId>easymock</artifactId><version>4.3</version></dependency><dependency><groupId>org.apache.ant</groupId><artifactId>ant</artifactId><version>1.9.5</version></dependency><dependency><groupId>javax.xml.rpc</groupId><artifactId>javax.xml.rpc-api</artifactId><version>1.1</version></dependency><dependency><groupId>wsdl4j</groupId><artifactId>wsdl4j</artifactId><version>1.6.2</version></dependency><!-- https://mvnrepository.com/artifact/org.eclipse.jdt/ecj --><dependency><groupId>org.eclipse.jdt</groupId><artifactId>ecj</artifactId><version>3.26.0</version></dependency><!-- https://mvnrepository.com/artifact/biz.aQute.bnd/biz.aQute.bndlib --><dependency><groupId>biz.aQute.bnd</groupId><artifactId>biz.aQute.bndlib</artifactId><version>6.4.0</version></dependency></dependencies><build><finalName>Tomcat8.5.55</finalName><sourceDirectory>java</sourceDirectory><resources><resource><directory>java</directory></resource></resources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><encoding>UTF-8</encoding><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build>
</project>

2)然后 Add Maven Projects

在这里插入图片描述

三、在目录中增加 home 目录

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

这样做的好处:

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

在这里插入图片描述

四、增加启动配置

在这里插入图片描述

  • JREJDK 8

  • Main Classorg.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
    

    注意: 上面的 /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) {}
}

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

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

在这里插入图片描述

解决

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

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

在这里插入图片描述

http://www.lryc.cn/news/222106.html

相关文章:

  • 基于SSM的旅游管理系统的设计与实现
  • 多目标优化中的“latent action”是什么?
  • 上海亚商投顾:三大指数小幅下跌 CPO、算力板块集体爆发
  • 【C语法学习】19 -关闭和刷新文件
  • 制作吉他谱软件Guitar Pro8中文版本
  • SpringBoot整合JUnit
  • 华为取消6000万订单影响在扩大,高通嘴硬强调不受影响
  • 培训心得怎么写?CHAT帮你解决问题
  • AJAX-解决回调函数地狱问题
  • 【Mac开发环境搭建】JDK安装、多JDK安装与切换
  • C,C++,JAVA的区别与联系
  • 界面控件DevExpress WPF PDF Viewer,更快实现应用的PDF文档浏览
  • nanodet训练自己的数据集、NCNN部署到Android
  • 含泪整理的超全窗口函数:数据开发必备
  • CCF ChinaSoft 2023 论坛巡礼 | NASAC青年软件创新奖论坛
  • ES 未分片 导致集群状态飘红
  • Python - 面向现实世界的人脸复原 GFP-GAN 简介与使用
  • Xcode15 framework ‘CoreAudioTypes‘ not found
  • torch.cuda.is_available()=false的原因
  • asp.net docker-compose添加网关和网关配置
  • 论文阅读:LOGO-Former: Local-Global Spatio-Temporal Transformer for DFER(ICASSP2023)
  • 【GO】项目import第三方的依赖包
  • 【Linux基础IO篇】用户缓冲区、文件系统、以及软硬链接
  • 电脑软件:推荐一款电脑多屏幕管理工具DisplayFusion
  • 免费好用的网页采集工具软件推荐
  • 6.ELK之Elasticsearch嵌套(Nested)类型
  • RefConv: 重参数化的重新聚焦卷积(论文翻译)
  • 指令重排序
  • 【Head First 设计模式】-- 观察者模式
  • JavaWeb篇_01——JavaEE简介【面试常问】