问题
在我的 Mac 环境下,配置了多个 Java 版本,在 终端的配置文件 .zshrc(如果你用的是 Bash,则是是在 .bash_profile)中,默认配置的 JAVA_HOME 是 Java 1.8 的版本,但是在终端执行 startup.sh 和 sudo startup.sh 命令启动 Tomcat 服务器时,发现 Tomcat 的 JRE_HOME 环境变量不一样,执行 startup.sh 命令时,JRE_HOME 是 1.8 版本的,但是执行 sudo startup.sh 命令 却是 17 版本的。
startup.sh
Using CATALINA_BASE: /Library/Tomcat
Using CATALINA_HOME: /Library/Tomcat
Using CATALINA_TMPDIR: /Library/Tomcat/temp
Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
Using CLASSPATH: /Library/Tomcat/bin/bootstrap.jar:/Library/Tomcat/bin/tomcat-juli.jar
Tomcat started.
sudo startup.sh
Password:
Using CATALINA_BASE: /Library/Tomcat
Using CATALINA_HOME: /Library/Tomcat
Using CATALINA_TMPDIR: /Library/Tomcat/temp
Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
Using CLASSPATH: /Library/Tomcat/bin/bootstrap.jar:/Library/Tomcat/bin/tomcat-juli.jar
Tomcat started.
解决
我猜测是加了 sudo 命令后,读取的配置文件不一样,加 sudo 后读的是 Tomcat 自带的配置文件,我的解决办法是修改 Tomcat 自带的配置文件。具体操作如下:进入 /Library/Tomcat/ 目录,打开 catalina.sh 文件,在其中添加你的 JAVA_HOME 和 JRE_HOME 环境变量,比如
#Tomcat 的 Java 环境
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
export JRE_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
你要把以上代码中的路径改成你电脑上的路径。重启 Tomcat 服务器,搞定。