当前位置: 首页 > news >正文

一篇文章解决 Win10 同时部署多个版本的Tomcat

文章目录

    • 所用到的文件夹
    • Tomcat服务端口修改
    • Tomcat参数修改
    • 环境变量配置
    • 验证环境是否配置成功
    • 可能遇到的问题
      • 问题一:startup.bat闪退
      • 问题二:startup.bat成功启动,但仍打不开服务器
    • 总结

  • 最近在学习JavaWeb的时候,想安装新版本的Tomcat11,又不想把之前安装过的Tomcat9卸掉,于是就在想能不能同时安装两个版本的Tomcat兼容一下
  • 所以就有了今天的这篇文章,教会你们如何搭建多个版本的Tomcat服务器
  • 演示的环境是Windows10,安装的版本为Tomcat11,所用到的Java版本为jdk17
    • Tomcat下载链接:https://tomcat.apache.org/
    • JDK17下载链接:https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html
  • 注意,这里下载的都是zip压缩包,不要下载安装程序!,避免环境冲突
    在这里插入图片描述
    在这里插入图片描述

所用到的文件夹

  • Tomcat11 文件夹D:\Tomcat11
    Tomcat11 文件夹页面

  • Tomcatbin目录:
    在这里插入图片描述

  • Tomcatconf目录:
    在这里插入图片描述

  • Jdk 17目录D:\JAVA\jdk17
    在这里插入图片描述

Tomcat服务端口修改

  • 由于之前已经安装过了Tomcat9,这里为了避免冲突,需要先将启动和关闭的端口修改一下
  • conf目录下的server.xml文件中,修改如下代码:
<!-- 将port 8005修改为8015 -->
<Server port="8015" shutdown="SHUTDOWN"><Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- 将port 8080修改为8081 -->
<Connector port="8081" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />
  • 这里可以修改为任意端口,只要保证不冲突就行,然后保存文件

Tomcat参数修改

  • 这里Tomcat9Tomcat11用的jdk版本不同,所以避免冲突,我们需要替换一下环境变量
  • 打开bin目录,对所有.bat文件,替换如下字段,只要与之前的区别开就行
    1. CATALINA_HOME --> CATALINA11_HOME
    2. CATALINA_BASE --> CATALINA11_BASE
    3. CATALINA_TIMDIR --> CATALINA11_TIMDIR
    4. JRE_HOME --> JRE11_HOME
    5. JAVA_HOME --> JAVA11_HOME

环境变量配置

  • 然后我们Win + R输入sysdm.cpl配置环境变量
  • 第一个地方是系统变量这里,添加如下内容(根据自己的实际安装路径更改):
CATALINA11_BASE  : D:\Tomcat11
CATALINA11_HOME : D:\Tomcat11
CATALINA11_TIMDIR : D:\Tomcat11\temp
JAVA11_HOME : D:\JAVA\jdk17

在这里插入图片描述

  • 然后找到Path,双击进行编辑,添加JDK的环境D:\JAVA\jdk17\bin或者%JAVA11_HOME%\bin
    在这里插入图片描述
  • 注意,这里尽量设置在其他Java版本的前面,避免系统解析旧的Java版本

验证环境是否配置成功

  • 使用java -version命令验证Java环境是否修改成功:
    在这里插入图片描述
  • 如果仍然是其他版本的Java版本,可以重新打开一个终端再尝试一遍
  • 或者输入echo %JAVA11_HOME%看一看环境是否生效
  • 在终端下打开Tomcat文件夹,输入命令.\catalina.bat run运行起来,到这里应该是没有报错信息的:
    在这里插入图片描述
  • 如果显示上面这个页面就说明Tomcat启动成功了,我们访问http://localhost:8081即可:
    在这里插入图片描述
  • 之后再启动Tomcat就直接双击startup.bat文件即可
  • 这里同时启动两个版本的Tomcat都是没问题的

可能遇到的问题

问题一:startup.bat闪退

  • 如果直接启动startup.bat发生闪退,可以在命令行中启动看报错原因,一般都是端口占用环境配置错误或者文件损坏
  • 解决方法:
    • netstat -ano | findstr "8080"查看端口(看自己配置文件中的端口)是否被占用,如果被占用,在资源管理器中搜索相应的PID,结束进程即可
    • 如果是环境配置错误,就重新配置环境
    • 文件如果损坏,重新下载复制损坏文件即可

问题二:startup.bat成功启动,但仍打不开服务器

  • 如果在命令行中启动startup.bat,这里它会启动两个黑窗口,如果成功启动第一个,但是第二个黑窗口闪退,如下:
    在这里插入图片描述
  • 只能看到这个页面的话,说明可能是端口被占用,或者一些配置上的问题,比如系统仍然没有识别到正确的JDK版本等等
  • 我们可以在命令行中输入.\catalina.bat run去看一看报错信息,我这里遇到过两个问题:
  1. 第一个问题是:
PS D:\Tomcat11\bin> .\catalina.bat run
Using CATALINA11_BASE:   "D:\Tomcat11"
Using CATALINA11_HOME:   "D:\Tomcat11"
Using CATALINA11_TMPDIR: "D:\Tomcat11\temp"
Using JRE11_HOME:        "D:\JAVA\jdk11"
Using CLASSPATH:       "D:\Tomcat11\bin\bootstrap.jar;D:\Tomcat11\bin\tomcat-juli.jar"
Using CATALINA_OPTS:   ""
Unrecognized option: --enable-native-access=ALL-UNNAMED
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
  • 这个错误提示 “Unrecognized option: --enable-native-access=ALL-UNNAMED” 表明 Tomcat 启动时尝试使用的 JVM 参数与你当前的 JDK 版本不兼容,这通常是由于 JDK 版本识别错误 导致的。
  • 可以在Tomcatcatalina.bat文件中找到这行命令,然后注释/删除掉:
    在这里插入图片描述
  1. 第二个问题是:
PS D:\Tomcat11\bin> .\catalina.bat run
Using CATALINA11_BASE:   "D:\Tomcat11"
Using CATALINA11_HOME:   "D:\Tomcat11"
Using CATALINA11_TMPDIR: "D:\Tomcat11\temp"
Using JRE11_HOME:        "D:\JAVA\jdk11"
Using CLASSPATH:       "D:\Tomcat11\bin\bootstrap.jar;D:\Tomcat11\bin\tomcat-juli.jar"
Using CATALINA_OPTS:   ""
错误: 加载主类 org.apache.catalina.startup.Bootstrap 时出现 LinkageErrorjava.lang.UnsupportedClassVersionError: org/apache/catalina/startup/Bootstrap has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0
  • 这个错误明确表明:你实际使用的 JDK 版本仍然低于 Tomcat 11 的要求,将JDK版本升级到jdk17及以上即可解决

总结

  • 以上就是我在安装多个版本的Tomcat时踩过的坑,希望能够帮助大家解决一些安装时的问题
  • 如果文章有错误的地方欢迎指出,也欢迎大家讨论和交流学习!
http://www.dtcms.com/a/323985.html

相关文章:

  • WiFi原理与WiFi安全
  • 【秋招笔试】2025.08.09美团秋招算法岗机考真题-第一题
  • C语言——深入理解指针(二)
  • JavaSE:入门
  • LeetCode 组合总数
  • 五种Excel表格导出方案
  • 40.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--初始化网关
  • Pytorch深度学习框架实战教程-番外篇05-Pytorch全连接层概念定义、工作原理和作用
  • afsim2.9_使用QtCreator和VSCode编译
  • ShadowKV 机制深度解析:高吞吐长上下文 LLM 推理的 KV 缓存“影子”方案
  • GPT OSS深度解析:OpenAI时隔6年的开源模型,AI民主化的新里程碑?
  • FFmpeg实现音视频转码
  • Java 日常开发笔记(小程序页面交互传参-id)
  • ATF(TF-A)安全通告 TFV-13(CVE-2024-7881)
  • 《从零构建大语言模型》学习笔记4,注意力机制1
  • ubuntu22.04安装autoware.universe
  • 【YOLOv8改进 - C2f融合】C2f融合Outlook Attention:将细粒度特征编码到 token 中, 提高在图像分类和语义分割等任务中的性能
  • Docker Compose 部署高可用 MongoDB 副本集集群(含 Keepalived + HAProxy 负载均衡)
  • 106-基于Flask的重庆充电桩投建数据可视化分析系统
  • Spring Boot WebSocket实时在线人数统计
  • 从onnx模型到om模型的全自动化转化
  • Spring Boot集成WebSocket
  • Vue 3 的编译时优化如何改写 DOM 操作规则
  • ubuntu超简单自动化Vim配置
  • 【嵌入式硬件实例】-555定时器PWM调光电路
  • vue: Module “vue“ has no exported member xxx
  • Dify 从入门到精通(第 26/100 篇):Dify 的知识图谱集成
  • [激光原理与应用-224]:机械 - 机械设计与加工 - 常见的术语以及含义
  • 解决IDEA2024切换窗口后无脑编译重启
  • 论文阅读:Aircraft Trajectory Prediction Based on Residual Recurrent Neural Networks