今天遇到Tomcat启动startup.bat闪退的问题。看了网上的解决办法大同小异。
首先我在cmd中执行了netstat -ano|findstr "8080",并没有找到有占用端口的进程。
然后因为我本地存在两个Tomcat版本,一个是8.0一个是8.5,所以我把两个的路径分别写进了系统变量CATALINA_BASE、CATALINA_HOME、TOMCAT_HOME。当然JAVA_HOME就是我的jdk路径,我也设置了。当执行catalina -version命令时无法识别,说明可能我配置的系统变量不对。然后我把其中的8.5去掉只保留8.0的,这时候虽然catalina -version无法执行,但是Tomcat可以启动了。这时候又出来一个问题,当我启动Tomcat8.5时,导入文件却都是从8.0里导入的。
因此我把系统变量CATALINA_BASE、CATALINA_HOME、TOMCAT_HOME全给删了,假如我没有配置CATALINA_HOME,CATALINA_BASE,startup.bat文件也会自己配置的。看该文件的24行左右有rem Guess CATALINA_HOME if not defined,说明文件考虑到了用户没有配置系统变量的情况。而且假如启动不成功,就会打印34行的两个echo。
然后记事本打开Tomcat\bin\startup.bat,在文件最前面加入
SET JAVA_HOME=D:\Program Files\Java\jdk1.8.0_171
SET TOMCAT_HOME=D:\tomcat\apache-tomcat-8.0.50
在文件最后面加入pause。pause是为了让startup.bat执行后不会自动闪退,这样我们可以看出存在的问题。
然后在startup.bat中看到没有错误发生,CATALINA_BASE、CATALINA_HOME也被文件自己设置好了。最后我把pause删了,Tomcat8.0,Tomcat8.5也都可以正常的运行了。