- Java 环境变量:运行 Java 程序(包括 Tomcat)所必需。
- Tomcat 环境变量:优化或配置 Tomcat 自身行为时使用。
- Windows 和 Linux/macOS 的设置方法:提供具体操作步骤。
Java 环境变量
这些变量是让操作系统能找到 Java Development Kit (JDK) 或 Java Runtime Environment (JRE) 的核心变量。

(图片来源网络,侵删)
JAVA_HOME
- 作用:指向你的 JDK 安装根目录的路径,这是最重要的 Java 环境变量,许多 Java 应用程序(包括 Tomcat)和构建工具(如 Maven、Gradle)都会通过这个变量来寻找 Java 的安装位置。
- 值示例:
- Windows:
C:\Program Files\Java\jdk-17.0.2 - Linux/macOS:
/usr/lib/jvm/java-17-openjdk-amd64或/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
- Windows:
- 为什么需要它?:
- 可移植性:当你更换 JDK 版本或路径时,你只需要修改
JAVA_HOME的值,而不需要修改所有依赖 Java 的应用程序的配置。 - 标准化:为所有 Java 相关工具提供了一个统一的查找入口。
- 可移植性:当你更换 JDK 版本或路径时,你只需要修改
PATH
- 作用:让操作系统能够在命令行中直接执行 Java 命令(如
java,javac,keytool等),它包含了一系列目录的列表,当你在终端输入一个命令时,系统会按顺序在这些目录中查找该命令的可执行文件。 - 值:你需要将
%JAVA_HOME%\bin(Windows) 或$JAVA_HOME/bin(Linux/macOS) 追加到PATH变量的末尾,而不是覆盖它。 - 为什么需要它?:
- 方便你在任何目录下直接使用
java -version等命令,而无需每次都输入完整的路径。
- 方便你在任何目录下直接使用
- 错误示例:不要将
PATH设置为只包含%JAVA_HOME%\bin,这样会覆盖掉系统原有的PATH(如C:\Windows\System32),导致很多其他命令无法使用。
Tomcat 环境变量
这些变量用于配置 Tomcat 的运行行为,通常有两种设置方式:
- 系统环境变量:影响整个操作系统中所有运行的 Tomcat 实例。
- Tomcat
catalina.sh/catalina.bat脚本内变量:只影响通过该脚本启动的特定 Tomcat 实例。这是更推荐的方式,因为它不会影响其他程序,且配置清晰。
以下是几个最常用的 Tomcat 环境变量:
CATALINA_HOME
- 作用:指向 Tomcat 的安装根目录,这个目录包含了
bin,conf,webapps,logs等核心文件夹。 - 值示例:
- Windows:
D:\apache-tomcat-10.1.0 - Linux/macOS:
/opt/apache-tomcat-10.1.0
- Windows:
- 何时使用:当你需要通过命令行手动启动、停止 Tomcat 时,
CATALINA_HOME是必需的,Tomcat 的启动脚本(startup.sh/shutdown.sh)会依赖它。
CATALINA_BASE
- 作用:指向 Tomcat 的运行时实例目录,如果你在一台服务器上运行多个独立的 Tomcat 实例,你可以为每个实例设置不同的
CATALINA_BASE。 - 默认值:如果未设置
CATALINA_BASE,它会默认使用CATALINA_HOME的值,对于单实例部署,通常不需要设置它。 - 高级用法:通过设置
CATALINA_BASE,你可以让多个 Tomcat 共享同一份 Tomcat 程序文件(在CATALINA_HOME中),但拥有各自的配置文件、日志、Web 应用和临时文件(都在CATALINA_BASE指定的目录下),这极大地节省了磁盘空间。
JAVA_OPTS
- 作用:用于向 Java 虚拟机 (JVM) 传递启动参数,这是调整 Tomcat 性能最重要的变量。
- 常见设置:
- 堆内存大小:
- 初始堆大小:
-Xms512m - 最大堆大小:
-Xmx1024m - 示例:
-Xms512m -Xmx1024m(设置初始内存为 512MB,最大内存为 1GB)
- 初始堆大小:
- 元空间大小 (JDK 8+ 替代了 PermGen):
- 初始元空间:
-XX:MetaspaceSize=256m - 最大元空间:
-XX:MaxMetaspaceSize=512m
- 初始元空间:
- 垃圾回收器:
- 使用 G1 垃圾回收器 (JDK 9+ 默认):
-XX:+UseG1GC
- 使用 G1 垃圾回收器 (JDK 9+ 默认):
- 其他:
-Dfile.encoding=UTF-8: 设置文件编码为 UTF-8,避免中文乱码。-Djava.rmi.server.hostname=your_server_ip: 在分布式环境中指定 RMI 服务器的主机名。
- 堆内存大小:
- 设置位置:通常在 Tomcat 的
bin/setenv.sh(Linux/macOS) 或bin\setenv.bat(Windows) 文件中设置,这个文件在启动 Tomcat 时会被catalina.sh/catalina.bat自动加载,如果文件不存在,你可以自己创建一个。
如何设置环境变量
Windows 系统
-
打开环境变量设置:
- 在搜索栏中输入 “编辑系统环境变量”,然后打开它。
- 或者右键点击 “此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
-
设置
JAVA_HOME:
(图片来源网络,侵删)- 在 “系统变量” 区域,点击 “新建”。
- 变量名:
JAVA_HOME - 变量值: 你的 JDK 安装路径,
C:\Program Files\Java\jdk-17.0.2。注意不要加分号。
-
修改
PATH:- 在 “系统变量” 区域,找到并选中
PATH变量,点击 “编辑”。 - 在 “编辑环境变量” 窗口中,点击 “新建”,然后输入
%JAVA_HOME%\bin。 - 确保这一行在列表中的位置靠后,或者将其移动到现有条目的下方,以免覆盖系统路径。
- 确保系统原有的
Path条目(如C:\Windows\System32)都还在。
- 在 “系统变量” 区域,找到并选中
-
设置 Tomcat 变量 (
CATALINA_HOME,JAVA_OPTS):- 同样在 “系统变量” 区域,点击 “新建”。
- 变量名:
CATALINA_HOME - 变量值: 你的 Tomcat 安装路径,
D:\apache-tomcat-10.1.0 - 再次点击 “新建”。
- 变量名:
JAVA_OPTS - 变量值:
-Xms512m -Xmx1024m -Dfile.encoding=UTF-8
-
验证:
- 重启 你的命令行工具(CMD 或 PowerShell),因为环境变量的更改不会在已打开的会话中生效。
- 输入
java -version,应显示你安装的 JDK 版本。 - 输入
%JAVA_HOME%和%CATALINA_HOME%,应分别打印出对应的路径。
Linux / macOS 系统
通常使用 ~/.bashrc, ~/.bash_profile 或 /etc/profile 文件来设置,对于当前用户,推荐 ~/.bashrc。
-
打开配置文件:
nano ~/.bashrc
(你也可以使用
vim或其他编辑器) -
在文件末尾添加以下内容:
# --- Java Environment --- export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 # 请替换为你的实际 JDK 路径 export PATH=$JAVA_HOME/bin:$PATH # --- Tomcat Environment --- export CATALINA_HOME=/opt/apache-tomcat-10.1.0 # 请替换为你的实际 Tomcat 路径 # --- Java Options for Tomcat --- # 推荐在 setenv.sh 中设置,如果要在全局设置,可以这样: export JAVA_OPTS="-Xms512m -Xmx1024m -Dfile.encoding=UTF-8"
-
保存并退出:
- 在
nano中,按Ctrl+X,然后按Y,最后按Enter。
- 在
-
使配置生效:
source ~/.bashrc
-
验证:
- 打开一个新的终端窗口。
- 输入
echo $JAVA_HOME,应显示 JDK 路径。 - 输入
echo $CATALINA_HOME,应显示 Tomcat 路径。 - 输入
java -version,应显示 JDK 版本。
总结与最佳实践
| 变量名 | 作用 | 设置方式 | 必需性 |
|---|---|---|---|
JAVA_HOME |
JDK 安装根目录 | 系统环境变量 | 必需 |
PATH |
包含 JAVA_HOME/bin |
系统环境变量 | 必需 |
CATALINA_HOME |
Tomcat 安装根目录 | 系统环境变量或脚本变量 | 必需 (手动操作时) |
CATALINA_BASE |
Tomcat 运行实例目录 | 系统环境变量或脚本变量 | 可选 (多实例部署时) |
JAVA_OPTS |
JVM 启动参数 | 推荐在 setenv.sh/bat 中设置 |
可选 (性能调优时) |
最佳实践建议:
JAVA_HOME和PATH:设置为系统环境变量,因为它们是通用的。CATALINA_HOME:可以设置为系统环境变量,方便手动操作 Tomcat。JAVA_OPTS:强烈建议在 Tomcat 的bin/setenv.sh(Linux) 或bin\setenv.bat(Windows) 文件中进行设置,这样做的好处是配置与应用程序(Tomcat)绑定,更清晰,且不会影响其他 Java 程序。
