最近刚刚接触Tomcat,对其还不是很了解。在这几天,遇到一个Tomcat启动闪退的问题,通过查阅各种资料,算是完美解决。在此分享给朋友们。
首先,确定你的问题在哪里。有两个方法,你可以通过日志去查询,也可以直接去一般处理程序中启动。
1.查询错误:win+R 输入cmd,进入一般处理程序。通过cd 找到你Tomcat的bin文件夹,在bin下面输入startup.bat run运行,运行后,如果提示,缺少JAVA_HOME 或者缺少JRE_HOME(如图所示)。说明你的环境变量不对,或者是缺少环境变量。
2.解决方案:通过命令行的提示看到,这是因为电脑上没有配置JAVA_HOME或者JRE_HOME导致的。那么下面添加上JAVA_HOME和JRE_HOME。具体步骤为计算机->属性->环境变量,然后添加系统变量:如图所示
添加完JAVA_HOME和JRE_HOME两个系统变量之后,在将这两个变量放到path系统变量中,方法是,在path变量值的后面直接追加 【;%JAVA_HOME%;%JRE_HOME% 】如图,注意分号是环境变量的分割符号,不可少。
设置好之后,确定,保存,重新启动一般处理程序。继续运行步骤一,这时的运行结果,一般如下:如果,你的Tomcat可以启动了,那么恭喜你,问题解决了!
3.如果,启动到这一步之后,Tomcat启动到中间,又出现错误,这时,我们就要通过日志,去查询错误。进入Tomcat根目录下的Logs,找到对应的catalina.2015-0*-**.log,在这里,你会看到警告和错误。如下所示:
警告: Couldn't initialize Jasper
java.lang.NoClassDefFoundError: javax/servlet/jsp/JspFactory
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:344)
at org.apache.catalina.core.JasperListener.lifecycleEvent(JasperListener.java:63)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:99)
at org.apache.catalina.startup.Catalina.load(Catalina.java:638)
at org.apache.catalina.startup.Catalina.load(Catalina.java:663)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:280)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:454)
Caused by: java.lang.ClassNotFoundException: javax.servlet.jsp.JspFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 15 more
七月 19, 2015 3:26:10 下午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["http-bio-8080"]
七月 19, 2015 3:26:10 下午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["ajp-bio-8009"]
七月 19, 2015 3:26:10 下午 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 952 ms
七月 19, 2015 3:26:10 下午 org.apache.catalina.startup.Catalina start
严重: The required Server component failed to start so Tomcat is unable to start.
org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.startup.Catalina.start(Catalina.java:689)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.naming.NamingContext.<clinit>(NamingContext.java:58)
at org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:252)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:731)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 13 more
4.解决方案:这个错误,困扰了我很久,一直找不到解决方案,在网上查阅了很多资料,也没有办法解决。最后,在一个论坛的角落里,找到了解决方案。这个错误的主要原因就是找不到LogFactory,引起这个错误有很多可能,其中,有一种就是你在jdk的bin下面,添加了重复的jar包,或者类似功能的jar包,导致重复,还有就是在Tomcat的bin下面添加的jar包引起的错误。我是在jdk下面添加了一个javaee.jar
解决当时出现的Javac不是内部命令的错误。导致Tomcat启动中途失败。
学习还在继续,Tomcat的研究也在进行中,边学习,边总结,变分享,如果有错误,欢迎指正,感激不尽!
分享到:
相关推荐
具体问题应该具体分析解决,一般而言我们解决Tomcat启动闪退问题的关键就是在于收集详细的错误信息,结合日志文件、环境配置和系统资源状态,逐步排查潜在的问题根源,并针对性地进行修正。 以下时可能出现的部分...
tomcat 启动闪退
万能解决tomcat方式,该资源即可解决!!!! 若还是有问题,则可在下方留言!!!
tomcat启动不了问题处理 解决tomcat启动不了问题
免安装的tomcat双击startup.bat后,启动窗口一闪而过,而且tomcat服务未启动,下面与大家分享下原因及解决方法
Tomcat无法正常启动的解决办法 教你如何解决Tomcat无法正常启动 欢迎下载
tomcat启动时立即调用quartz执行一次
启动tomcat,Tomcat启动常见的问题
( Eclipse中Tomcat启动失败的解决方案.txt
tomcat启动管理工具
内嵌式tomcat启动web工程,maven代码 内嵌式tomcat启动web工程,maven代码
tomcat启动时执行java自定义方法,一般用于启动时赋值情况。
tomcat启动脚本tomcat启动脚本tomcat启动脚本tomcat启动脚本tomcat启动脚本tomcat启动脚本tomcat启动脚本tomcat启动脚本tomcat启动脚本tomcat启动脚本tomcat启动脚本tomcat启动脚本tomcat启动脚本
Tomcat启动分析以及如何启动 关于tomcat的配置及其代码
tomcat 开机启动,dos窗口去掉,tomcat 开机启动,dos窗口去掉
之前tomcat启动老是报错,虽然不影响项目的启动运行,但是有强迫症的程序员会心里不爽: 如下: 问题分析 由于本机安装的jdk版本与tomcat中使用的jdk版本不一致导致的。 解决方法 后面我把原先tomcat启动环境用的...
tomcat-juli.jar 用于在tomcat启动报错时除错
今天在帮一位同学解决了一个问题——Tomcat启动超级慢,大概五六分钟。解决之后,只需要3秒钟即可启动。 问题怎么解决呢? 在Tomcat的bin目录下找到catalina.sh,然后打开它,在以下位置添加一行代码: -Djava....
windows及linux环境下,tomcat启动参数的设置。在Tomcat上运行j2ee项目代码时,经常会出现内存溢出的情况,解决办法是在系统参数中增加系统参数...