startup.bat启动Tomcat闪退
克萨斯的松鼠 人气:0出现问题:
安装了Tomcat之后,开始用着还好好的。莫名其妙
的就很突然出现了一些玄学问题,某一次开始我双击了startup.bat
启动Tomcat时我的黑窗口就很不给面子的运行着运行着就闪退
了,隐约间能看到个异常,可刚看清楚一个caused by...
黑窗口就已经关闭了。经历了重启电脑等常规解决问题的思路后依旧无法解决。
分析问题
既然问题出现在这个启动后闪退,那就去看一眼启动时都做了什么?用记事本打开startup.bat
,会发现一行脚本是这样写的:
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
看得出它访问了本目录下的catalina.bat
脚本,那就记事本打开catalina.bat
,此时又发现里面出现了这些内容:
rem Get standard Java environment variables
if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath
echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat"
echo This file is needed to run this program
goto end
:okSetclasspath
call "%CATALINA_HOME%\bin\setclasspath.bat" %1
if errorlevel 1 goto end
这说明catalina.bat
又访问了该目录下的setclasspath.bat
,而记事本打开setclasspath.bat
后又发现它又访问了catalina.bat
。
综上发现startup.bat启动流程
为:startup->catalina->setclasspath->catalina
闪退原因:
可见这三个文件一个都不能出问题。分析这三个文件得出闪退问题主要原因
原因一:java环境变量出问题了
从启动脚本中看得出Tomcat多次访问了环境变量信息,其中也包括java环境(毕竟Tomcat原码也是java啊)。故要先去检查jdk的环境配置
。
注意:CATALINA_HOME
是Tomcat的环境,你可以选择不配置,不过这样的话你就只能在bin目录下启动Tomcat了,换句话来讲,配置完Tomcat环境后你可以把startup.bat
复制到其他地方双击启动。
原因二:端口占用
如果Tomcat已经被启动或者8080端口被占用,这自然是不允许的。
你可以直接访问localhost:8080
看能否访问Tomcat,如果可以那就说明是已经开启过了的,你可以双击shutdown.bat
进行关闭。
或者你可以在黑窗口中执行netstat -ano | findstr "8080"
查看8080端口状态,如果是TIME_WAIT
则说明未被占用。
原因三:你的Tomcat不干净了
到现在还没解决,那就有可能是你所下载的Tomcat是一些绿色版、无敌版、xx版
等阉货或畸形货。此时就可在记事本打开startup.bat
,在脚本最后面一行加上pause
,保存后启动进行断点调试了。(不一定非得像我图片中加在倒数第二行,最后一行应该也可以,只要不放在前面的逻辑中就行)。
此时启动效果和之前没有区别,只是出了问题后不再会立刻闪退,而是你在窗口中按任意键后才会退出。OK!现在你就研究属于你的bug吧(记得解决完问题后把pause删掉)!
加载全部内容