什么情况下在A目录下运行tomcat/bin/start.bat但是启动的确实B目录下的tomcat以及项目,解决办法

问题现象

在windows同一个环境里设置了两个tomcat目录,端口号不同,应用不同,在A目录下 运行tomcat/bin/start.bat 但是启动的确实B目录下的tomcat以及项目。

问题原因

当前windows环境里设置了环境变量CATALINA_HOME,这样以来不管在哪里运行start脚本都会使用这个CATALINA_HOME指定的tomcat。  所以根据需要将这个环境变量删除即可。

具体剖析

先看看tomcat的bin下start.bat(以tomcat 8.0.41)文件内容:

rem Guess CATALINA_HOME if not defined
set "CURRENT_DIR=%cd%"
if not "%CATALINA_HOME%" == "" goto gotHome
set "CATALINA_HOME=%CURRENT_DIR%"
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
cd ..
set "CATALINA_HOME=%cd%"
cd "%CURRENT_DIR%"
:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end
:okHome

set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

首先设置CUTRRENT_DIR 为 %cd%,%cd%表示获取当前这个start.bat文件所在目录完整路径。

之后判断有没有设置CATALINA_HOME环境变量,则将这个CATALINA_HOME设置为当前目录%CURRENT_DIR%,当前目录则通过当前路径获取。

如果没有设置CATALINA_HOME环境变量,并且当前目录下不存在bin\catalina.bat那么就提示:

The CATALINA_HOME environment variable is not defined correctly
This environment variable is needed to run this program

然后就结束了。就需要先解决这个提示的问题。

再看接下来的内容:

整体逻辑就是start.bat去找某个目录下的\bin\catalina.bat 如果没有找到就提示:

Cannot find XXXXX/bin/catalina.bat
This file is needed to run this program

如果存在指定的这个目录下的\bin\catalina.bat 就执行:if ""%1""==""""  (这个表示 判断命令行第一个参数 )如果第一个参数为空就调用 前面找到的 XXX/bin/catalina.bat start 加上获取到的命令行参数 CMD_LINE_ARGS 。。。

大致就是这样了....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值