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

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

技术杂谈小彩虹2021-07-12 14:56:2790A+A-

背景

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

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

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

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

问题描述及初步解决

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

翻译为:

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

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

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

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

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

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

​ 启动时如果设置了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的根目录

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

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

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

得出结论:

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

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

至此该问题解决!

终极解决方案

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

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

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

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

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

总结

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

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

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1

联系我们