1. 部署前的准备工作:JDK、Tomcat版本和PATH变量
Windows下部署Tomcat,很多人觉得就是把压缩包解压,然后双击startup.bat完事。实际上我在日常工作中见过太多人卡在启动闪退、页面404、控制台乱码这些问题上,排查到最后,大部分都是环境准备阶段埋下的坑。这篇文章我把Windows上部署Tomcat的完整流程梳理一遍,从JDK环境、版本选型到目录结构、配置修改、项目部署,再到高频问题的排查思路,基本能覆盖你在真实场景里会遇到的情况。
先说清楚这篇文章适合谁。如果你是刚接触Java Web开发的新手,或者需要在Windows服务器上快速跑起来一个Java后端项目,再或者是测试环境需要搭一套Tomcat来验证功能,那这篇文章可以直接拿来参考。下面内容我都按实际操作来写,命令和路径尽量完整,照着做基本不会出大问题。
1.1 JDK 17安装与JAVA_HOME配置
Tomcat本质上是跑在JVM里的Java程序,所以第一步不是装Tomcat,而是确认你机器上的JDK环境是否可用。现在新项目普遍用JDK 8、JDK 11或JDK 17,其中JDK 17因为长期支持(LTS)的特性,使用的团队越来越多。这里就以JDK 17为例,讲解下载和配置的关键点。
去Oracle官网下载JDK 17的Windows x64安装包,文件名一般类似jdk-17.0.10_windows-x64_bin.exe。安装的时候有两点需要特别注意:
- 安装路径不要带中文和空格,建议装到一个纯英文目录,比如
D:\Java\jdk-17.0.10。我之前遇到过有人装在C:\Program Files\Java\jdk-17,这种带空格的路径在后续脚本解析时偶尔会出问题,虽然现在多数场景下没事,但没必要给自己埋雷。 - 安装器可能会自动往系统Path里写入JDK的可执行文件路径,但JAVA_HOME这个环境变量通常不会自动创建,需要手动来配。
JAVA_HOME的配置步骤如下:
- 右键“此电脑” → “属性” → “高级系统设置” → “环境变量”。
- 在“系统变量”区域点击“新建”,变量名填
JAVA_HOME,变量值填JDK安装目录,比如D:\Java\jdk-17.0.10。 - 找到系统变量中的
Path,双击打开,点击“新建”,添加一行%JAVA_HOME%\bin。 - 所有窗口点“确定”保存,然后重新打开一个CMD窗口,输入
java -version,能看到版本信息就说明配置成功。
这里解释一下为什么非要配JAVA_HOME而不是直接把JDK路径写死。Tomcat的启动脚本catalina.bat在启动时会读取JAVA_HOME环境变量,用它来定位java.exe。如果你不配JAVA_HOME而只配Path,部分脚本逻辑可能还能找到Java,但很多依赖JAVA_HOME的第三方工具会直接报错。养成配JAVA_HOME的习惯,后面装Maven、Gradle、Jenkins这些工具都会省事很多。
注意:配置完环境变量后,已经打开的命令行窗口不会自动加载新的变量值,需要重新打开CMD窗口再验证。
1.2 Tomcat版本怎么选:8.5、9.0还是10.x
Tomcat版本的选择直接影响你后续开发的兼容性,尤其是Servlet版本和命名空间的变化。我看到身边还有人抱着Tomcat 7不放,其实完全没必要。目前主流的Tomcat版本是8.5.x、9.0.x、10.0.x、10.1.x和11.0.x,不同版本对应不同的Java版本和Servlet规范。
| Tomcat版本 | 对应Java版本 | Servlet规范 | 命名空间 | 适用场景 |
|---|---|---|---|---|
| 8.5.x | Java 7及以上 | Servlet 3.1 | javax.* | 老项目维护、兼容旧环境 |
| 9.0.x | Java 8及以上 | Servlet 4.0 | javax.* | 绝大多数传统Java Web项目 |
| 10.0.x | Java 8及以上(建议11) | Servlet 5.0 | jakarta.* | 新项目、迁移到Jakarta |
| 10.1.x | Java 11及以上 | Servlet 6.0 | jakarta.* | 新项目、配合JDK 17 |
| 11.0.x | Java 17及以上 | Servlet 6.1 | jakarta.* | 尝鲜或新项目长期维护 |
这里最核心的差异是命名空间。Tomcat 10开始,包名从javax.servlet变成了jakarta.servlet。如果你的项目还是基于javax.servlet写的,直接扔到Tomcat 10或11里会报ClassNotFoundException,因为类路径完全变了。
我的建议是:如果你是自己学习或者新开一个Spring Boot项目要部署war包,用Tomcat 9.0.x最稳妥,资料最多、踩坑案例也全;如果你用的是Spring Boot 3.x或者Jakarta EE的新项目,选Tomcat 10.1.x配JDK 17。8.5.101这个版本目前还存在于很多线上老环境里,主要用于维护老项目,新项目就别从8.5起步了。
下载的时候去Apache Tomcat官网,找到对应版本的“Binary Distributions”区域,选64-bit Windows zip或者zip格式。注意别下错成Windows Service Installer,那个是exe安装包,适合要注册Windows服务的人,平时开发调试用zip包更方便,解压就能用。
1.3 CATALINA_HOME与Path配置示例
Tomcat和JDK一样,也建议配置一个环境变量:CATALINA_HOME,指向Tomcat的解压目录。虽然不配也能启动,但配了之后有几个好处:一是后续脚本和工具能正确识别Tomcat安装位置;二是你在命令行任意目录下都可以用%CATALINA_HOME%\bin\startup.bat来启动,不用切目录;三是很多自动化部署脚本会读取这个变量。
配置方式和JAVA_HOME一样,在系统变量里新建:
- 变量名:
CATALINA_HOME - 变量值:Tomcat解压路径,比如
D:\apache-tomcat-9.0.101
然后编辑Path,新增一行%CATALINA_HOME%\bin。
配置完成后,重新
