根据网友返回 好多人在启动tomcat时都会遇到各种各样的问题,(比如有的同学可以不用配置CATALINA_HOME 环境变量 ,有的不配置就不能运行)今天遇到的问题是解压版tomcat9,双击 tomcat9.exe 可以打开正常运行tomcat,如下图;
但 双击 startup.bat 却闪退,好神奇的说
原因: startup.bat 识别不到java环境变量
排查过程项目:
1. 可以确定8080 端口没被占用。
2. jdk 环境变量完好(我的java跑的好好的,maven 项目也能跑)。
3. 我配置的有 CATALINA_HOME 环境变量 (网友反应一没有配置环境变量可能导致一闪而退,因为有的同学不用配置,也能正常运行。)
排查startup.bat
3.cmd 命令启动Tomcat:
使用管理员身份打开cmd,进入 tomcat 目录下的 /bin,输入【startup.bat】指令,运行启动文件可以看到报错信息,直接双击一闪而过。
看到了问题:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
既没有定义JAVA_HOME,也没有定义JRE_HOME环境变量,运行此程序至少需要这些环境变量中的一个。
说我jdk 环境问题,不可能,绝对不可能是这个问题,我的java跑的好好的,maven 项目也能跑。
解决办法
jdk 被调用整个调用链路:启动文件startup.bat → catalina.bat → setclasspath.bat,setclasspath.bat 里读取系统的环境变量。
在 启动文件startup.bat 文件 或者 setclasspath.bat 中添加 如下:
startup.bat 正常启动
Tomcat最核心的目标是基于Tomcat编程,感觉这个就是 tomcat 的疑难杂症吧。