`
lu930124
  • 浏览: 28577 次
  • 性别: Icon_minigender_2
  • 来自: 廊坊
文章分类
社区版块
存档分类
最新评论

Tomcat启动一半闪退问题解决

 
阅读更多

最近刚刚接触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的研究也在进行中,边学习,边总结,变分享,如果有错误,欢迎指正,感激不尽!



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics