Skip to content

Tomcat 指定 JDK 运行(多版本共存)

一、背景

机器上同时存在多个 JDK(如 JDK 8、JDK 11)。全局默认是 JDK 8,希望 Tomcat 9 单独使用 JDK 11,且不影响系统及其他应用的 JDK 8。

示例路径:JDK 11 为 /home/application/jdk-11.0.2,Tomcat 为 /home/application/apache-tomcat-9.0.91

二、操作步骤

2.1 修改 setclasspath.sh

文件路径:/home/application/apache-tomcat-9.0.91/bin/setclasspath.sh

在脚本开头(#!/bin/sh 之后)指定 JAVA_HOME

bash
#!/bin/sh
JAVA_HOME=/home/application/jdk-11.0.2
# ... 其余内容保持不变

2.2 修改 catalina.sh

文件路径:/home/application/apache-tomcat-9.0.91/bin/catalina.sh

同样在开头指定 JAVA_HOME

bash
#!/bin/sh
JAVA_HOME=/home/application/jdk-11.0.2
# ... 其余内容保持不变

三、启动并验证

bash
/home/application/apache-tomcat-9.0.91/bin/startup.sh

启动日志中关注 Using JRE_HOME / Using JAVA_HOME,应指向 JDK 11 路径,例如:

bash
Using CATALINA_BASE:   /home/application/apache-tomcat-9.0.91
Using CATALINA_HOME:   /home/application/apache-tomcat-9.0.91
Using CATALINA_TMPDIR: /home/application/apache-tomcat-9.0.91/temp
Using JRE_HOME:        /home/application/jdk-11.0.2
Using CLASSPATH:       /home/application/apache-tomcat-9.0.91/bin/bootstrap.jar:/home/application/apache-tomcat-9.0.91/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

也可进程侧确认:

bash
ps -ef | grep tomcat
# 或查看进程环境 / 打开的 java 路径是否为 jdk-11.0.2

NOTE

若启动仍显示旧的 JDK 8,请确认 JAVA_HOME 已写在两个脚本最前、路径无拼写错误,并重新 shutdown.sh 后再 startup.sh。也可优先在 setenv.sh(同 bin 目录,没有则新建)中只写 JAVA_HOME=...,避免直接改 catalina.sh

最近更新