版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
Tomcat 需要配置环境变量吗?
tomcat 是一款轻量级web应用服务器,安装的时候我们都是直接解压zip包,然后在bin目录下双击 startup.bat 就可以启动了,但也相应的会遇到一些问题;
1. Tomcat启动会出现的两个问题:
- JAVA_HOME 配置问题导致的闪退
解决方案:- 配置jdk时以名字为JAVA_HOME的环境变量
如果你在不是JAVA_HOME 而是 其他的 如:javahome ,随后你的classpath,path都跟着写javahome , 运行java ,javac命令都不会报错,但当你运行tomcat目录下的startup.bat时,就会闪退,这里主要都是因为在配置jdk时命名不规范。 - 修改startup.bat,使其不依赖JAVA_HOM 和 CATALINA_HOME变量的方法:
SET JAVA_HOME=jdk目录 SET CATALINA_HOME=解压后Tomcat的目录 例如: set JAVA_HOME=D:\Program Files\java\jdk1.8.0_181 set CATALINA_HOME=D:\apache-tomcat-9.0.13
- 配置jdk时以名字为JAVA_HOME的环境变量
- 没有在startup.bat目录下运行startup.bat导致的报错
这里它运行在C盘,所以这里会报错; 这里可以通过配置环境变量解决;
但也可以不配,因为只需要在 startup.bat 的目录下运行即可
2. 查看 startup.bat文件
文件解释:
setlocal
rem Guess CATALINA_HOME if not defined
set CURRENT_DIR=%cd%
//设置当前目录
if not "%CATALINA_HOME%" == "" gotogotHome
//如果设置了CATALINA_HOME环境变量 ,就直接到下面的gotHome处
set CATALINA_HOME=%CURRENT_DIR%
//如果没有设置CATALINA_HOME,就设置CATALINA_HOME为当前目录(其实这里她假设你进入tomcat的安装目录)
if exist "%CATALINA_HOME%\bin\catalina.bat" gotookHome
//判断一下catalina.bat是否找到了,找到了就直接到下面的gotHome处
cd ..
//这里他是假设你开始已经进入到了tomcat的bin目录,所以就退到上一级目录
set CATALINA_HOME=%cd%
//现在再设置CATALINA_HOME为tomcat的安装目录
cd %CURRENT_DIR%
//这里是进入dos的当前目录
:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" gotookHome
//再次判断catalina.bat是否找到了,找到了就直接到下面的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
//设置要执行的文件
rem Check that target executable exists
if exist "%EXECUTABLE%" gotookExec
//再次判断catalina.bat是否找到了,找到了就直接到下面的okExec处,没有的话,就提示。
echo Cannot find %EXECUTABLE%
echo This file is needed to run this program
goto end
:okExec
rem Get remaining unshifted command line arguments and save them in the
set CMD_LINE_ARGS=
//这里是设置参数
:setArgs
if ""%1""=="""" gotodoneSetArgs
//判断参数是否加入完成
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
//将参数组成一行,接在后面
shift
gotosetArgs
:doneSetArgs
call "%EXECUTABLE%" start %CMD_LINE_ARGS%
//执行catalina.bat
:end
-
setlocal 是启动批处理文件中环境变量的本地化,相当于设置临时环境变量; 此命令有效到出现endlocal命令或到达批处理文件结尾为止
-
rem 代表注释,看第一行注释,如果CATALINA_HOME未定义,就猜!
-
文件意思大概为三点:
- 判断CATALINA_HOME是否为空,为空则把当前目录设为CATALINA_HOME的值;
- 再判断 catalina.bat 是否存在,不存在则回到上一级目录,再把当前目录设为CATALINA_HOME的值;
- 再判断环境变量下的 catalina.bat 是否存在,存在则调用bin目录下的 “catalina.bat start” 命令
所以,tomcat启动的时候是会自己设置临时环境变量的,不必自己去配置