Tomcat服务器启动闪退及卸载tomcat中部署的项目

看到这篇文章的小伙伴们一定是遇到了启动Tomcat服务器时闪退的问题吧,很高兴为大家分享一下我的一点经验。
首先我遇到这样的问题已经不止一次了,原因不止一种,解决办法也不唯一。(我又不傻,同样的办法能解决我也不会碰到多次啊)
提前申明一下,本次测试使用的是apache-tomcat-9.0.0.M15版本,其他版本借鉴

原因一:JDK或者JRE找不到

配置JDK的正确方法

JAVA_HOME设置
在系统变量(当然你如果觉得这台电脑是公用的,或者这个JDK只能你自己使用,添加到用户变量里也可以,Path的添加也写在用户变量里)中添加添加一个条目:JAVA_HOME(名称不区分大小写,字母对就可以),值为你安装的JDK路径
Path设置
Path中添加JDK的bin目录,推荐使用%JAVA_HOME%的引用加上子目录”\bin”( 注:引用也不区分大小写,就是说你上一步定义的java_home是小写字母,这里大写照样识别),或者这一步你使用接下来的错误方法也不会影响,因为系统cmd执行的”javac”命令取自path这个变量的指向空间

JDK的错误配置

有童鞋为了省事儿,说既然cmd执行的javac命令直接取自path指向的目录
那就直接给Path一个JDK\bin的绝对路径,这样你在cmd当中执行javac命令一样可以,编译”.java”文件也没问题,如图
直接配置Path
其实这样做是不利的,你碰到的tomcat闪退可能就是这个原因。
我们来看下tomcat的启动文件,在tomcat的安装目录的bin里面(apache-tomcat-9.0.0.M15\bin)的startup.bat
apache-tomcat-9.0.0.M15\bin\startup.bat
它会先从系统变量中寻找”CATALINE_HOME“这个变量(所以你也可以在刚刚的环境变量里面配置这个条目,值为tomcat的安装目录),如果找不到就设置CATALINE_HOME的值为”当前目录”(实际上应该叫父级目录,就是tomcat的安装目录)[第27行],(当前目录在第25行获取),然后设置一个变量EXECUTABLE值为apache-tomcat-9.0.0.M15\bin\catalina.bat文件[第39行],最后执行这个文件[第57行](中间过程不用看了就是一些条件判断和打印输出错误信息,不存在的能获取创建就创建,不能就报错)
接下来看这个catalina.bat文件
catalina.bat注释
如图第52-57行注释(rem 开头表示注释),上面说必须指明JDK的安装位置[52行],必须指明JRE的安装位置,如果不指明就使用默认值JAVA_HOME的位置(也就是jdk的位置,因为jdk目录下都有一个jre的包,除非你删了),如果jre,jdk都设置这个值就用你设置的jre的路径

接下来看下具体的引用,如图
jdk引用
它是读取了环境变量里的”JAVA_HOME”这个变量(当然这里不区分大小写,上面讲过),所以说JDK的环境变量配置应该以上面那种方式

解决方案:

第一种:

改JDK的环境变量配置

第二种:

在tomcat的启动文件(startup.bat)里面直接指明JDK安装路径,请看上面startup.bat的截图第23行,我打成了注释,把rem去掉”set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.8.0_111”即可

原因二:误删Webapps下的项目

错误删除tomcat中部署的项目

事情是这样的,我想直接卸载tomcat中部署的项目,在localhost:8080服务器端也没找到我能读懂的帮助卸载文件,就擅自删掉了webapps目录下我自己部署的项目,这项操作很简单,但是之后我就后悔了,启动服务器闪退,我就又研究了一下它的启动文件。
删除的项目
这是我删除掉的项目

cataline.bat

在原因一里面我说了startup.bat文件会调用执行cataline.bat文件
继续查看cataline.bat文件
cataline.bat提示
在第272行,它说configtest这个操作会运行一个对server.xml文件的基本语法检查,后面有一个doConfigTest方法就是这么做了,有兴趣的自己看下(我的在310行的位置),具体的过程在execCmd方法的后面一直到结尾,那段太复杂了我也看不懂(学过脚本语言的可以尝试一下)
接下来就看一下server.xml里面有什么,这个文件在conf文件夹下(apache-tomcat-9.0.0.M15\conf)

server.xml

server.xml
这个文件里面配置了服务器的连接,监听,引擎等信息,需要关注的是这里 “< Context >”标签,它指明了注册在服务器上的项目,而Model1Demo正是我删除的那个。这样问题就明显了,服务器启动的时候检查到server.xml文件发现这个项目不存在,而系统也没有对这类信息进行处理报错,干脆点退出吧。这就是闪退的第二种原因可能。

解决方案:

第一种:

把删除的文件找回来(看起来这样就白删了)

第二种:

在server.xml文件中把删除的文件对应的”< Context >”标签也删掉,保存

总结

想卸载项目的小伙伴们还可以通过开发工具,比如eclipse,myeclipse里面对服务器的管理面板中,把本开发工具部署上去的项目右击移除(操作麻烦点,但没有后顾之忧)
目前我所遇到的能处理启动闪退的问题就这些,希望对各位能有帮助。总之,不懂就看它源码(毕竟是开源的),也欢迎有新发现的小伙伴在评论区留言

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值