在 Ubuntu 中,如何设置 Tomcat 9 使用 Java 17?

cor*_*utz 4 linux spring-boot tomcat9 java-17

正如标题所述,在 Ubuntu 20.04 中如何设置 Tomcat 9 使用 Java 17 ?

最近,我使用 Spring Boot 3.0.1 重新打包了我的 Web 项目的war文件,该项目需要 Java 17 才能运行,并尝试将其部署到 Ubuntu 20.04 服务器上的 Tomcat 9 容器。

看来最好的办法就是利用setenv.sh.

我跟踪了一些文档,bin在 中创建了一个文件夹/usr/share/tomcat9,触摸了 的文件setenv.sh,并用 编辑了其内容JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64

然后运行sudo systemctl start tomcat9,但是失败。 sudo systemctl status tomcat9说“找不到 JDK 或 JRE - 请设置 JAVA_HOME 变量或安装 default-jdk 包”,

首先安装了openjdk-17-jre-headless,并删除了openjdk-11-jre-headless 。Tomcat9 和 JRE 17 都是通过apt包管理器安装的。

Pan*_*kos 6

即使您成功地使用 tomcat 9 运行,使用spring boot 3.xspring Framework 6.xjava 17的 Web 应用程序仍然无法在那里运行。

原因是从 Spring Boot 3.0 或 Spring Framework 6.0 开始,Web 应用程序需要符合 jakarta servlet api。根据tomcat 的文档,tomcat 10及更高版本支持 jakarta servlet api (servlet v5.0) 。

如文档中所述

阿帕奇汤姆猫 10.0.x

Apache Tomcat 10.0.x 基于 Tomcat 9.0.x 构建,并实现了Servlet 5.0、JSP 3.0、EL 4.0、WebSocket 2.0 和 Authentication 2.0 规范(Jakarta EE 9 平台所需的版本)。

所以你必须使用tomcat 10而不是tomcat 9。


Vin*_*dic 5

好吧,我在找到答案后找到了这个线程,所以我会写下我的解决方案如果它可以帮助任何人:

操作系统:Ubuntu 22.04

安装 Java : apt-get install openjdk-17-jdk

添加 JAVA_HOME :nano /etc/environment

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

然后

使用 apt-get install tomcat9 安装 Tomcat9

使用以下命令启动 tomcat9:service tomcat9 start

以下错误指出未找到JAVA_HOME ,这是不正确的。

您需要找到脚本/usr/libexec/tomcat9/tomcat-locate-java.sh

它实际上搜索 Java 的版本 11 到 8。

通过这种方式更新脚本添加版本 17 可以解决问题:

    find_jdks()
{
    for java_version in 17 11 10 9 8
    do
Run Code Online (Sandbox Code Playgroud)