文章目录

    • 所用到的文件夹
    • 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.pswp.cn/bicheng/92791.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92791.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/92791.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS7安装和使用Workbench

文章目录CentOS7安装和使用Workbench一、前言1.简介2.环境二、正文1.更换镜像源2.安装依赖包3.下载4.安装5.打开workbench6.使用记录1&#xff09;连接数据库2&#xff09;创建数据库3&#xff09;导入数据3&#xff09;导出数据4&#xff09;运行SQL脚本5&#xff09;打开SQL脚…

SpringBoot查询方式全解析

文章目录一、简介二、常用注解分类1、请求映射类&#xff08;处理 URL 与 HTTP 方法的绑定&#xff09;2、参数绑定类&#xff08;从请求中获取数据并绑定到方法参数&#xff09;3、控制器与增强类&#xff08;标识控制器及全局增强&#xff09;4、异常与响应处理类&#xff08…

Linux操作系统从入门到实战(十五)详细讲解Linux调试器 gdb/cgdb使用

Linux操作系统从入门到实战&#xff08;十五&#xff09;详细讲解Linux调试器 gdb/cgdb使用前言一、gdb/cgdb是什么&#xff1f;1. 程序的两种发布模式&#xff08;debug 和 release&#xff09;二、gdb/cgdb如何启动&#xff1f;1. 准备工作2. 启动 gdb/cgdb 调试器2.1 启动 g…

基于UDP的代理协议的Tuic怎么样?

Tuic&#xff08;全称“TUIClient”&#xff09;是一款基于UDP协议的轻量代理工具&#xff0c;主打低延迟与高实时性&#xff0c;专为解决传统TCP代理在实时场景中的性能瓶颈而生。其核心设计围绕“UDP优先”展开&#xff0c;通过简化握手流程、优化加密效率&#xff0c;在保持…

缓存投毒进阶 -- justctf 2025 Busy Traffic

题目核心逻辑如下 let browser; // 全局浏览器实例// 访问指定 URL 的异步函数 const visit async (url) > {try {// 如果已有浏览器实例&#xff0c;先关闭并等待 2 秒if (browser) {await browser.close();await sleep(2000);console.log("Terminated ongoing job.&…

复刻苏宁易购(移动端)

html代码<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><link rel"s…

Scrapy返回200但无数据?可能是Cookies或Session问题

引言 在使用Scrapy框架进行网页爬取时&#xff0c;开发者可能会遇到一个常见但令人困惑的问题&#xff1a;HTTP请求返回状态码200&#xff08;表示成功&#xff09;&#xff0c;但实际获取的数据却是空的。这种情况通常意味着目标服务器接受了请求&#xff0c;但由于某些原因没…

【gateway nc adapter虚拟网卡 win11 联想】问题的解决

前言&#xff1a;由于需要登录公司内网&#xff0c;于是启用奇安信VPN。但启动后报出网关未连接的问题&#xff0c;于是我检查了我的网络适配器&#xff0c;并尝试解决&#xff0c;以下给出几种我实践过程中的行动&#xff0c;并附带最后成功的解决方法 【gateway nc adapter虚…

基于开源AI智能名片链动2+1模式S2B2C商城小程序的运营策略创新研究

摘要&#xff1a;在数字化商业生态快速演进的背景下&#xff0c;传统运营模式面临用户增长乏力、转化效率低下等挑战。本文以开源AI智能名片链动21模式与S2B2C商城小程序的深度融合为研究对象&#xff0c;提出通过周期化运营规划、关键节点策略设计、跨部门协同创新、数据驱动决…

smart-water表设计方案

-- -- 2. SOP 管理模块 -- -- 2.1 SOP主表 (存储SOP元数据&#xff0c;与版本分离) CREATE TABLE sops (id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),name VARCHAR(255) NOT NULL,description TEXT,latest_published_version_id UUID, -- 外键约束在版本表创建后添加crea…

A4.0:继C5.2的BJT理论引申的开关作用的应用示例

在C5里知道了BJT的静态工作点Q的计算方式&#xff08;IC和VCE的负载线&#xff09;&#xff0c;以及偏置电阻RB&#xff0c;得到了电流IB&#xff0c;进而通过电流增益hFE得到了IC(IC β*IB)&#xff0c;然后VCE VCC - IC*RC&#xff0c;即集电极和发射极之间的电压等于集电极…

平板探测器的主要技术指标

平板探测器(Flat-panel-detector,FPD)是一种广泛应用于医学影像学(如X射线、CT扫描等)、工业无损检测和科学研究中的成像设备。其主要技术指标包括以下几个方面: 1.空间分辨率(SpatialResolution) 定义:空间分辨率是指平板探测器能清晰分辨图像中细节的能力。一般以…

从苏州姑苏区人工智能大模型基础设施招标|学习参数5:单颗 AI 处理器的内存带宽如何达到 1600GB/s

招标参数5:配置≥8 个AI 处理器,支持OAM式集成服务器形式。单个 AI 处理器支持≥370TFLOPS@FP16或 80TFLOPS@FP32 算力,支持≥64GB HBM高带宽内存,单个AI处理器内存带宽≥1600GBps 单张卡算力及内存带宽参考如下NVIDIA算力表 H3C R4900 G5:支持多达 32 个 DDR4 内存,速率…

【机器学习深度学习】Embedding 模型详解:从基础原理到实际应用场景

目录 前言 一、Embedding 模型基础&#xff1a;文本到向量的“魔术师” 1.1 什么是 Embedding&#xff1f; 1.2 为什么需要 Embedding&#xff1f; 二、核心作用与优势&#xff1a;语义分析的“利刃” 三、工作原理拆解&#xff1a;从训练到应用的完整链条 3.1 训练阶段…

防御保护10

双机热备组网配置主备备份组网1、配置ip地址2、配置安全区域3、ospf配置4、配置双机热备5、安全策略hrp adjust ospf-cost enable --- 配置根据VGMP状态调整OSPF Cost值如果防火墙下行设备为三层设备&#xff0c;通过路由来引导流量&#xff0c;则需要配置上述命令&#xff1b;…

Python爬虫实战:研究meshio库,构建网格文件数据采集系统

一、引言 (一)研究背景 在有限元分析、计算流体力学(CFD)、计算机辅助设计(CAD)等领域,网格文件是描述几何模型离散化信息的基础数据载体,包含节点坐标、单元连接关系、物理属性等关键信息。目前,网格文件格式多达数十种(如 VTK、STL、OBJ、ANSYS CDB 等),且分散…

编程基础之字符串——统计数字字符个数

题目&#xff1a; 输入一行字符&#xff0c;统计出其中数字字符的个数。 输入&#xff1a; 一行字符串&#xff0c;总长度不超过255。 输出&#xff1a; 输出为1行&#xff0c;输出字符串里面数字字符的个数。 样例输入&#xff1a; Peking University is set up at 1898. 样…

Openlayers基础教程|从前端框架到GIS开发系列课程(19)地图控件和矢量图形绘制

1. 地图控件本篇教程主要介绍以下地图控件&#xff1a;视图跳转控件放大缩小控件全屏控件实现步骤1. 初始化地图上一篇已经介绍了&#xff0c;这一篇直接跳过该步骤。2. 视图跳转控件/* 视图跳转控件 */const ZoomToExtent new ol.control.ZoomToExtent({ extent: [110, 30, …