文章目录
- 所用到的文件夹
- 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
:
-
Tomcat
的bin
目录:
-
Tomcat
的conf
目录:
-
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参数修改
- 这里
Tomcat9
和Tomcat11
用的jdk版本不同,所以避免冲突,我们需要替换一下环境变量 - 打开
bin
目录,对所有的.bat
文件,替换如下字段,只要与之前的区别开就行:CATALINA_HOME
--> CATALINA11_HOMECATALINA_BASE
--> CATALINA11_BASECATALINA_TIMDIR
--> CATALINA11_TIMDIRJRE_HOME
--> JRE11_HOMEJAVA_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
去看一看报错信息,我这里遇到过两个问题:
- 第一个问题是:
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 版本识别错误 导致的。
- 可以在
Tomcat
的catalina.bat
文件中找到这行命令,然后注释/删除掉:
- 第二个问题是:
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
时踩过的坑,希望能够帮助大家解决一些安装时的问题 - 如果文章有错误的地方欢迎指出,也欢迎大家讨论和交流学习!