转载

CATALINA_HOME导致的tomcat无法正常启动问题

背景

在学习elasticsearch时为了方便进行数据查询,使用了head插件

因为elasticsearch版本较高(6.3.0),没有与版本相符的head插件,将以独立web项目运行

所以提供了一个tomcat 单独运行head web项目

在使用该tomcat时遇到了无法启动问题

问题描述及初步解决

双击startup.bat脚本无任何反应,所以在cmd窗口去运行,结果发现如下错误信息:

CATALINA_HOME导致的tomcat无法正常启动问题

翻译为:

CATALINA_HOME环境变量定义不正确
运行此程序需要此环境变量
复制代码

遂查看系统环境变量,果然发现该环境变量:

CATALINA_HOME导致的tomcat无法正常启动问题

删除该变量后,tomcat得以正常启动

那么为啥会出现这个问题呢?

在经过面向百度编程之后,找到问题原因:tomcat的startup.bat脚本中有代码如下:

CATALINA_HOME导致的tomcat无法正常启动问题

虽然看不懂语法 但是大概意思可以理解:

​ 启动时如果设置了CATALINA_HOME就会去对应的CATALINA_HOME下的bin目录去找对应的脚本启动tomcat

​ 如果没找到就设置CATALINA_HOME为当前目录 就会去执行当前路径的bin目录下的脚本(正常启动)

然后在上面代码的26行我找到了出错原因:

​ 我系统变量中配置的目录非tomcat根目录而是bin目录 根据26行的代码可知 脚本启动后它会去CATALINA_HOME下的bin目录去找catalina.bat脚本执行 我的变量中配置的目录为bin目录所以报了CATALINA_HOME环境变量定义不正确

找到错误原因后我尝试修改了CATALINA_HOME的环境变量 删除了原本的bin 改为了tomcat7的根目录

CATALINA_HOME导致的tomcat无法正常启动问题

再次尝试启动tomcat8 发现本次可以正常启动 但是启动的tomcat却是环境变量中配置的tomcat7

这证明了之前的猜测是正确的!进行最后一步测试

随后删除该成员变量后tomcat8正常启动!

得出结论:

​ tomcat启动时如果设置了系统变量CATALINA_HOME就会拼接路径为:CATALINA_HOME/bin,然后去该路径执行对应脚本

​ 如果没有设置CATALINA_HOME,则会正常执行当前目录的脚本

至此该问题解决!

终极解决方案

解决该问题的第二天(重启电脑后),当我再次尝试启动tomcat8时,再次出现了第一次的问题,直接闪退,使用cmd启动后发现了跟第一次一样的问题:CATALINA_HOME环境变量定义不正确

再次去查看系统环境变量确认已经删除了CATALINA_HOME环境变量

经过再次上网查询后找到解决方案:

CATALINA_HOME导致的tomcat无法正常启动问题

在tomcat8的startup.bat脚本中手动设置CATALINA_HOME为该tomcat的根目录

最终测试结果可以正常执行 同时不影响tomcat7的正常执行

总结

由于tomcat启动脚本的机制,所以建议删除系统变量中的CATALINA_HOME,如果删除了之后还是有某个tomcat出现CATALINA_HOME问题无法启动,则可以给该tomcat手动设置CATALINA_HOME

本文已在csdn同步上传: CATALINA_HOME导致的tomcat无法正常启动问题

原文  https://juejin.im/post/5eaa9d216fb9a0434e0c4cdf
正文到此结束
Loading...