Ich versuche, einen Webdienst zu erstellen und auf Tomcat bereitzustellen. Ich folge diesem Tutorial .
Ich benutze Eclipse Europa.
Wenn ich jedoch versuche, den Server zu starten, wird der folgende Fehler zurückgegeben:
Java.lang.ClassNotFoundException: org.Apache.catalina.core.ThreadLocalLeakPreventionListener
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:217)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(URLClassLoader.Java:205)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:321)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:266)
at org.Apache.Tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.Java:205)
at org.Apache.Tomcat.util.digester.Rule.begin(Rule.Java:153)
at org.Apache.Tomcat.util.digester.Digester.startElement(Digester.Java:1356)
at com.Sun.org.Apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.Java:504)
at com.Sun.org.Apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.Java:182)
at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.Java:1320)
at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.Java:2732)
at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.Java:625)
at com.Sun.org.Apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.Java:488)
at com.Sun.org.Apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.Java:812)
at com.Sun.org.Apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.Java:741)
at com.Sun.org.Apache.xerces.internal.parsers.XMLParser.parse(XMLParser.Java:123)
at com.Sun.org.Apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.Java:1208)
at com.Sun.org.Apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.Java:525)
at org.Apache.Tomcat.util.digester.Digester.parse(Digester.Java:1642)
at org.Apache.catalina.startup.Catalina.load(Catalina.Java:524)
at org.Apache.catalina.startup.Catalina.load(Catalina.Java:562)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:616)
at org.Apache.catalina.startup.Bootstrap.load(Bootstrap.Java:262)
at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:430)
Die ThreadLocalLeakPreventionListener
wurde kürzlich zu Tomcat hinzugefügt. Es ist in Tomcat 7 sowie in den neuesten Versionen von Tomcat 6 verfügbar. Stellen Sie sicher, dass Sie über den neuesten Tomcat 6 mit einer sauberen Installation verfügen (Ihre Installation enthält möglicherweise den server.xml
der neuen Version und die jars der älteren Version )
auch ich hatte das gleiche Problem. Gehen Sie zur Registerkarte "Server" und klicken Sie mit der linken Maustaste auf "Apache-Server" und klicken Sie auf "Eigenschaften". Dort können Sie sehen, dass der Standort auf [Arbeitsbereich-Metadaten] zeigt. Klicken Sie auf Standort wechseln. Es wechselt zu Apache-Speicherort/Server/Tomcat xxx. Übernehmen Sie die Änderungen und speichern Sie sie.
Ihre web.xml enthält einen Eintrag für einen Listener, dessen Code in Tomcat 7.0.6 und höher hinzugefügt wurde, aber Ihr Tomcat ist älter als dieser -
org.Apache.catalina.core.ThreadLocalLeakPreventionListener
Wenn Sie die Klasse in server.xml verwenden, müssen Sie sie entfernen, um den Fehler/die Ausnahme zu beseitigen.
<Listener
className="org.Apache.catalina.core.ThreadLocalLeakPreventionListener"/>