org.apache.catalina.mbeans.ServerLifecycleListener



org.apache.catalina.mbeans.ServerLifecycleListener。

Tomcat 启动报错:

 

  1. java.lang.ClassNotFoundException: org.apache.catalina.mbeans.ServerLifecycleListener
  2.     at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
  3.     at java.security.AccessController.doPrivileged(Native Method)
  4.     at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
  5.     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
  6.     at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
  7.     at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:144)
  8.     at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1282)
  9.     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
  10.     at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:179)
  11.     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1339)
  12.     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2747)
  13.     at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
  14.     at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
  15.     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
  16.     at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
  17.     at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
  18.     at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
  19.     at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
  20.     at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1543)
  21.     at org.apache.catalina.startup.Catalina.load(Catalina.java:554)
  22.     at org.apache.catalina.startup.Catalina.load(Catalina.java:595)
  23.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  24.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  25.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  26.     at java.lang.reflect.Method.invoke(Method.java:597)
  27.     at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:262)
  28.     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:430)

 

 

原因:catalina.jar中means包是空的,具体该类的作用是配置JMX下

JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

解决办法:

把server.xml中的<Listener className=”org.apache.catalina.mbeans.ServerLifecycleListener” />注释掉就可以了

<!–<Listener className=”org.apache.catalina.mbeans.ServerLifecycleListener” /> –>

当然,如果你是少了jar,也可以把jar添加进去就搞定。

如果你是我下面这种情况,可以考虑注释掉,也可以考虑把Tomcat7原有的Listener替换掉当前的Listener就行


 

这次错误是我把Tomcat6的server.xml文件拷贝的Tomcat7下面来,想着懒得复制内容,干脆直接复制文件,没想到这个懒不能偷!

在Tomcat6的catalina.jar中有org.apache.catalina.mbeans.ServerLifecycleListener这么个类:

而Tomcat7中则木有这个类:

并且Tomcat7的server.xml跟Tomcat7的server.xml中的Listener都不相同,在Tomcat7中并没有org.apache.catalina.mbeans.ServerLifecycleListener这个Listener。

Tomcat6的server.xml:

 

  1. <Server port=”8005″ shutdown=”SHUTDOWN”>
  2.   <!–APR library loader. Documentation at /docs/apr.html –>
  3.   <Listener className=”org.apache.catalina.core.AprLifecycleListener” SSLEngine=”on” />
  4.   <!–Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html –>
  5.   <Listener className=”org.apache.catalina.core.JasperListener” />
  6.   <!– JMX Support for the Tomcat server. Documentation at /docs/non-existent.html –>
  7.   <Listener className=”org.apache.catalina.mbeans.ServerLifecycleListener” />
  8.   <Listener className=”org.apache.catalina.mbeans.GlobalResourcesLifecycleListener” />

 

Tomcat7的server.xml:

 

  1. <Server port=”8003″ shutdown=”SHUTDOWN”>
  2.   <!– Security listener. Documentation at /docs/config/listeners.html
  3.   <Listener className=”org.apache.catalina.security.SecurityListener” />
  4.   –>
  5.   <!–APR library loader. Documentation at /docs/apr.html –>
  6.   <Listener className=”org.apache.catalina.core.AprLifecycleListener” SSLEngine=”on” />
  7.   <!–Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html –>
  8.   <Listener className=”org.apache.catalina.core.JasperListener” />
  9.   <!– Prevent memory leaks due to use of particular java/javax APIs–>
  10.   <Listener className=”org.apache.catalina.core.JreMemoryLeakPreventionListener” />
  11.   <Listener className=”org.apache.catalina.mbeans.GlobalResourcesLifecycleListener” />
  12.   <Listener className=”org.apache.catalina.core.ThreadLocalLeakPreventionListener” />