真正解决方案:Tomcat 启动闪退

故障描述:

这篇记录一次神奇的Tomcat 闪退故障.
最近在开发时候,发现了一个神奇的事情,每次启动Tomcat 就闪退,又完全抓不到任何错误日志。

首先百分百可以确定的是JDK配置肯定没有任何问题的,Tomcat 原来配置如下:
Tomcat 环境变量配置如下:
真正解决方案:Tomcat 启动闪退
Path 路径配置如下:
真正解决方案:Tomcat 启动闪退
睁大眼睛看清楚,是不是觉得上面的配置似乎没有任何问题?
但是当你在安装目录的bin 文件夹下双击启动startup.bat
或者在命令行下输入命令:

 startup

你会发现Tomcat 神奇的闪退了,查看log 日志文件夹,看不到任何错误日志。
天知道我排查了好久,才发现这个隐藏这么深的Bug.

故障分析

问题出在哪里呢?问题就出在环境变量的配置上。
我们再来看下刚才的配置:

CATALINA_HOME
C:\Apps\tomcat\apache-tomcat-9.0.14-windows-x64\apache-tomcat-9.0.14\

path 中是这么调用的

%CATALINA_HOME%\bin

当你执行startup 命令的时候,实际访问的路径就是

C:\Apps\tomcat\apache-tomcat-9.0.14-windows-x64\apache-tomcat-9.0.14\\bin

睁大眼睛看清楚了,问题就出在这里

apache-tomcat-9.0.14\\bin

多了一个 \ 符号
也就是说你在win10 系统地址栏中输入这个地址:

C:\Apps\tomcat\apache-tomcat-9.0.14-windows-x64\apache-tomcat-9.0.14\\bin

就会发现找不到这个路径
反之,这样去掉多余的 \ 就可以

C:\Apps\tomcat\apache-tomcat-9.0.14-windows-x64\apache-tomcat-9.0.14\bin

解决方案:

真正解决方案:Tomcat 启动闪退
Path路径配置中要有符号
真正解决方案:Tomcat 启动闪退
总之,在win10 操作系统中路径 C:\A\b 和C:\A\b 是不一样的,这个问题虽然简单但是很容易忽略。