Class Cast exception: com.Sonne.org.apache.xerces.intern.jaxp.DocumentBuilderFactoryImpl
Bin ich beeindruckt mit einem problem mit jboss. Wenn ich versuche zum bereitstellen von meine .Krieg in den server, bekomme ich die folgende Fehlermeldung,
java.lang.ClassCastException: com.sun.org.apache.xerces.internal.jaxp.SAXParserF
actoryImpl cannot be cast to javax.xml.parsers.SAXParserFactory
aus, die, es ist ziemlich offensichtlich, dass es einen Kampf der Bibliotheken. Also entfernte ich die jar-Datei enthält xerces, das passiert durch die jaxp-ri-1.4.1.jar. Wenn ich jetzt versuche, zu re-implementieren, habe ich diesen neuen Fehler,
java.lang.NullPointerException
at org.apache.commons.digester.Digester.getXMLReader(Digester.java:944)
at org.apache.commons.digester.Digester.parse(Digester.java:1765)
at org.apache.struts.action.ActionServlet.initServlet(ActionServlet.java
wo es beschwert sich, dass es nicht finden können, die xml-Parser.
So, jetzt meine Fragen, weiß jemand, was kann eine Lösung sein. Alle jaxp jar-Datei, die nicht enthalten, die xerces-Paket?
Update
Habe ich wie vorgeschlagen hier und nun habe ich einen neuen Fehler,
java.lang.NoClassDefFoundError: Could not initialize class com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl
ist eine Klasse aus einem der Gläser habe ich gelöscht, die enthält SaxParserFactory 🙁
Alle Informationen, die wir haben könnte auf die neu gelöschte JAR?
InformationsquelleAutor Ozyman | 2010-11-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es, dass Sie Sie gelöscht haben den falschen GLAS. Die original classcastexception-Fehler gemeldet wurde, wenn eine Instanz von SAXParserFactoryImpl (das ist ein Subtyp von SAXParserFactory) ist gegossen, um SAXParserFactory.
Ausnahme ist eher aufgrund der Tatsache, dass es zwei Instanzen von SAXParserFactory anstatt zwei Instanzen von SAXParserFactoryImpl geladen wird in der JVM. Zum Zeitpunkt des Castings, die SAXParserFactory geladen von einem anderen classloader zurückgegeben wurde, was in der Ausnahme. Das Update ist daher zu identifizieren, die JARs in den classpath, die in Konflikt stehende Versionen von SAXParserFactory. Entfernen Sie die parser-Implementierung selbst ist vielleicht nicht klug, wenn Commons-Digester ist auf der Suche nach einer besonderen Umsetzung.
Ich denke, es wäre eine gute Idee zu überprüfen, wie Sie geerbt haben diese Gläser in Ihrem Projekt. Sie brauchen nicht eine Kopie von jaxp-ri-1.4.1.jar oder jaxp-api.jar um XML zu Parsen, vor allem, wenn man mit dem Sun JDK. Die JDK/JRE selbst hat die notwendigen APIs und der parser-Implementierung, die verwendet werden könnten. Am besten, Sie brauchen die Xerces-Bibliothek (die nur die required-JARs), die als einige der Gläser in der Verteilung dieses Problem verursachen (xml-apis.jar insbesondere von Xerces 2.x).
Wir verwenden maven für unser Projekt. Also, es sollte enthalten haben. Überraschenderweise gibt es keine Erwähnung von diesen Gläsern in pom.xml zu. Unser Projekt ist ein webservices-Projekt, also dachte ich, wir könnten Sie brauchen für das Marshalling. Ich werde versuchen und sehen, was passiert, wenn ich löschen jaxp -* - Dateien. Danke für die Tipps alle Weg...
Ah, dann möchten Sie vielleicht zu prüfen, welche Abhängigkeiten gezogen sind, in die von Maven durch die webservice-Bibliotheken enthalten. Ich bin mir nicht sicher, ob Sie können markieren Sie die entsprechenden Abhängigkeiten, die als runtime-Abhängigkeiten werden durch den container, in dem POM. Wenn alles andere fehlschlägt, sollten von der Trennung Ihrer webservices aus dem Struts-Aktionen, ggf. in ein separates web-Modul.
InformationsquelleAutor Vineet Reynolds
Ich vermute... sind Sie mithilfe von JBoss 5.1. Wenn dem so ist, dann ist es xml-parser und zum laden von Klassen Problem. Sie definieren müssen jboss-classloading.xml
Sehen http://www.coderanch.com/t/523519/JBoss/Cast und http://www.mastertheboss.com/jboss-application-ser...oss-5-classloading-issues.html
Eine weitere Sache: mit jboss-classloading.xml ist einfach und lässt uns bei der Lösung unserer Probleme sehr schnell, aber manchmal ist es notwendig, die Analyse unserer Anwendung genauer. Wir sollten sicherstellen, dass es nicht eine Frage des libs/Klasse copnflict. Es ist nicht leicht, aber wenn wir das nicht tun, können wir fallen in Schwierigkeiten. Zum laden von Klassen Probleme verursachen seeeehr merkwürdige Fehler. ZB. in meinem Fall konnte ich für die Bereitstellung der app als explodierte Krieg, aber nicht als "archiviert" Krieg. Wie sich herausstellte, eine Lösung? Entfernen jboss-classloading.xml und einige libs 🙂
InformationsquelleAutor patrycja