Web项目打成war包部署Tomcat时运行startup.bat直接闪退部署失败解决方案

即上篇经过将web项目打成war包部署到Tomcat服务器,解决mysql问题后,又出现了新问题,真是一波三折,因此将解决过程分享给你们,但愿能帮助到小伙伴们~html

将打好的war包拷贝到Tomcat的webapps目录,而后在Tomcat的bin目录找到startup.bat批处理文件,直接双击执行,结果运行几秒后直接闪退,顿时有种很差的预感,在浏览器访问web项目,结果连localhost:8080都没法访问,web项目未发布成功,一脸懵逼~mysql

没有日志看不到为啥发布不成功额,想了想,能够稍微修改下startup.bat批处理文件,添加PAUSE,这样运行结束只有按任意键才会关掉窗口(调试成功,在去掉PAUSE)。web

若是有错误信息,这时候会显示出来,能够再根据它的错误提示。sql

此时,发现显示了一些环境变量,是否是环境变量没有配置引发的报错呢,就去检查了下,发现没有配置JRE_HOME环境变量。配置后,发现仍是闪退。apache

也不清楚时环境变量引发的仍是什么缘由,没辙了,只能再找度娘了。浏览器

通过查资料,关于Tomcat中startup.bat原理的相关内容,以为颇有帮助,摘取部分片断分享下,可能跟解决这个问题不要紧,可略过~tomcat

startup.bat 解析服务器

 验证CATALINA_HOME 环境变量是否设置,若是没有设置则经过CATALINA_HOME/bin目录下查找catalina.bat文件来肯定CATALINA_HOME环境变量是否有效,若是没有找到catalina.bat 则goto end,结束。app

验证catalina.bat是否存在,若是不能存在则结束。webapp

判断启动 startup.bat 是否有参数,若是有参数,若是有有则赋值给 CMD_LINE_ARGS变量。 
经过call执行catalina.bat ,并传入参数。

其实startup.bat 的主要做用就是帮你找到catalina.bat并执行它。

好处:

若是你配置CATALINA_HOME的环境变量了,就能够把startup.bat 放到任何目录下,均可以启动tomcat了。 

 好了,根据对startup.bat文件的解析,发现如今的问题跟环境变量不要紧。瞬间有点失落。经验告诉我,能够查看日志撒。发现日志存在错误日志额。

问题解决方法请参考:Web项目打成war包部署到tomcat时报MySQL Access denied for user 'root'@'localhost' (using password: YES)错误解决方案

Tomcat其余问题总结:

问题一:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

Tomcat的startup.bat,它调用了catalina.bat,而catalina.bat则调用了setclasspath.bat,只要在setclasspath.bat的开头声明环境变量(红色两行)就能够了,缘由是后来较新版本安装完不会自动登记环境变量JAVA_HOME,JRE_HOME。

这样在每次运行startup.bat时就自动注册了JAVA_HOME,JRE_HOME。

问题二:Cannot find "D:\Program Files\apache-tomcat-7.0.52\bin\setclasspath.bat"

多是CATALINA_HOME的值在某个地方被写死了,像个人绿色版tomcat在bin文件下多了一个setenv.bat的文件,打开一看果真是在这里面被写死了CATALINA_HOME的路径,这应该是为了某种缘由被人后加上的设置文件,把这个文件删除以后,tomcat能够正常运行了。

这种状况,能够去看catalina.bat中的配置,以下图,可能配置死的内容就在这个文件里。

相关文章
相关标签/搜索