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包管理器安装的。
即使您成功地使用 tomcat 9 运行,使用spring boot 3.x或spring 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。
好吧,我在找到答案后找到了这个线程,所以我会写下我的解决方案如果它可以帮助任何人:
操作系统: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)
归档时间: |
|
查看次数: |
13331 次 |
最近记录: |