tomcat闪退错误排查

Posted by AchanYao on June 7, 2019

前两天在新电脑上运行tomcat,安装完成启动不了,总是闪退。刚开始以为是我的jre不对(我的是jdk11,没有jre),后来想想我直接用的jdk启动不应该出问题呀。后来经过调试,原来是端口占用的问题。回想起来班里有人找我帮他弄tomcat的时候我总是会丢过去一句tomcat坏了重装吧,真是罪过。特此写这么一篇作为记录,以示忏悔。阿门。

错误排查

我们来打开看看tomcat根目录下startup.bat的源码

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"

rem Check that target executable exists
if exist "%EXECUTABLE%" goto 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""=="""" goto doneSetArgs
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto setArgs
:doneSetArgs

call "%EXECUTABLE%" start %CMD_LINE_ARGS%

:end

原来startup.bat只是来设置tomcat运行环境的,真正的启动是在%CATALINA_HOME%\bin\catalina.bat这个文件中。而tomcat环境设置失败会直接goto end,所以我们来看看我们的环境设置是否正确。

tomcat一旦出错,直接闪退,所以双击运行startup.bat是行不通的。所以我们在cmd里面运行一下。或者更改一下startup.bat的源码,加一行pause。

我在cmd下的运行截图:
cmd下运行startup.bat.png
这里我的环境设置都是正确的,所以会跳到catalina.bat文件里面去。如果你的环境配置是错误的,是会有提示的。哪个错了改哪个就好了。

再来运行一下catalina.bat试试:
直接运行catalina.bat文件.png
它会提示你选择一个命令执行。这里我们选择run,想知道为什么请自己去看命令后面的说明。之后catalina.bat就会在当前命令窗口执行。如果tomcat启动过程中出现问题就会报错。将报错信息复制到百度里就可以找到解决方法了。

Tomcat常见错误

记录一下我自己遇见的,一些没有的之后会慢慢补上的

异常 错误说明 解决方案
java.net.BindingException 端口占用 https://www.baeldung.com/tomcat-bind-exception