tomcat启动失败,提示错误:严重 [main] org.apache.catalina.startup.Catalina.load Catalina.start

1.问题描述:

解压缩tomcat7后,运行startup.bat后,tomcat7无法启动,一闪而过。查看日志文件,发现里面的catalina.2019-03-06.log文件提示错误如下:

06-Mar-2019 12:24:25.698 严重 [main] org.apache.catalina.startup.Catalina.load Catalina.start
 org.apache.catalina.LifecycleException: Failed to initialize component [StandardServer[8005]]
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:112)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:639)
    at org.apache.catalina.startup.Catalina.load(Catalina.java:662)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:309)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
Caused by: java.lang.ClassCastException: org.apache.crimson.tree.DOMImplementationImpl cannot be cast to org.w3c.dom.ls.DOMImplementationLS
    at org.apache.catalina.core.JreMemoryLeakPreventionListener.lifecycleEvent(JreMemoryLeakPreventionListener.java:433)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:395)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
    ... 8 more

2.解决方法:

阅读上面的提示,大概知道原因是:Catalina.start启动失败,Caused by缺少一些包。但是看不懂到底缺少什么包,上网搜索各种方法,并尝试。尝试过的方法有:安装其他各种版本的tomcat,修改8005端口,修改web.xml等等。但是都无济于事,还是提示相同的错误。

于是在startup.bat加入停止符pause,如下图

重新运行tomcat,提示using JRE_HOME .............

才反应过来,原来是JRE路径设置问题,安装JDK时没有设置JRE_HOME环境变量,于是设置环境变量JRE_HOME为G:\Myeclipse\JDK\jre

重新启动tomcat,运行成功!

为了保险起见,大家也都设置下JRE_HOME,还有JAVA_HOME

3.原因分析

提示这个错误是因为Catalina.start需要使用JRE_HOME下的一些lib,但是JAVA_HOME下的lib不存在,所以一直报错缺少某些包。

这个错误困扰我几天,一直不知道如何解决,一直在想这是个什么错误,虽然有一些错误提示,但是还是不好解决。总结原因如下:

(1)配置JDK时,不需要设置JRE_HOME的环境变量。不设置JRE_HOME,JDK照样运行,导致我确信JDK的环境变量设置没有问题,一直没有去设置JRE_HOME,浪费大量时间。

(2)阅读tomcat里的RUNNING.txt文件,里面也说只需要设置JAVA_HOME或JRE_HOME中的其中一个,说明如下图:

导致我更加认为JDK的设置没有问题。

4.心得体会

去推倒你确信没错的东西是很困难的,只有不断学习才能突破自己的认知,才会进步。同时需要保持怀疑的精神,多加尝试,会出现意外的惊喜!

成功运行之后,我把之前的那些错误尝试重新验证下,发现JDK1.8(32bit)可以和tomcat7、tomcat8的32bit或64bit兼容。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值