You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04下如何配置Tomcat 9使用Java 17运行?

解决Tomcat 9在Ubuntu 20.04中无法识别Java 17的问题

问题分析

Ubuntu 20.04通过apt安装的Tomcat 9,其systemd服务默认不会自动读取/usr/share/tomcat9/bin/setenv.sh,且文件权限不正确或系统默认Java版本未切换到17,都会导致Tomcat启动时提示找不到JDK/JRE。

解决步骤

1. 确认Java 17路径并设置为系统默认

先确认Java 17的安装路径:

update-alternatives --list java

输出示例:

/usr/lib/jvm/java-17-openjdk-amd64/bin/java

此时JAVA_HOME为路径去掉/bin/java的部分,即/usr/lib/jvm/java-17-openjdk-amd64。

设置系统默认Java版本为17:

sudo update-alternatives --config java

选择对应Java 17的选项编号,按回车确认。

2. 配置Tomcat的JAVA_HOME(二选一)

方式一:修改Tomcat全局配置(推荐)

编辑Tomcat的全局配置文件:

sudo nano /etc/tomcat9/tomcat.conf

在文件末尾添加:

JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64

保存退出后重启Tomcat:

sudo systemctl restart tomcat9

方式二:使用setenv.sh并配置权限

如果坚持使用setenv.sh,需确保文件位置和权限正确:

  • 若/usr/share/tomcat9/bin目录不存在,先创建:
sudo mkdir -p /usr/share/tomcat9/bin
  • 创建setenv.sh文件:
sudo nano /usr/share/tomcat9/bin/setenv.sh

写入内容:

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
  • 设置文件权限,让Tomcat用户可执行:
sudo chown tomcat:tomcat /usr/share/tomcat9/bin/setenv.sh
sudo chmod +x /usr/share/tomcat9/bin/setenv.sh
  • 修改systemd服务配置,让Tomcat加载该文件:
    创建服务覆盖配置目录并编辑文件:
sudo mkdir -p /etc/systemd/system/tomcat9.service.d
sudo nano /etc/systemd/system/tomcat9.service.d/override.conf

写入:

[Service]
ExecStartPre=/usr/share/tomcat9/bin/setenv.sh
  • 重新加载systemd配置并重启Tomcat:
sudo systemctl daemon-reload
sudo systemctl restart tomcat9

3. 验证配置生效

查看Tomcat日志确认Java版本:

sudo tail -n 20 /var/log/tomcat9/catalina.out

日志中会显示Java 17的版本信息,说明配置成功。

内容的提问来源于stack exchange,提问作者zeroonezeroone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:05:21