Classe exception Cast: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
-
28-09-2019 - |
Question
Je suis frappé d'un problème dans jboss. Lorsque je tente de déployer mon .war sur le serveur, je reçois cette erreur suivante,
java.lang.ClassCastException: com.sun.org.apache.xerces.internal.jaxp.SAXParserF
actoryImpl cannot be cast to javax.xml.parsers.SAXParserFactory
à partir de laquelle, il est bien évident qu'il ya un choc des bibliothèques. Alors, je l'ai enlevé le fichier jar qui contient Xerces, qui se sont produits par jaxp-ri-1.4.1.jar. Maintenant, lorsque je tente de redéployer, je reçois cette nouvelle erreur,
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
où il se plaint qu'il ne peut pas trouver les parseurs XML.
Alors, maintenant mes questions est que quelqu'un sait ce qui peut être une solution. Tout fichier jar JAXP qui ne contient pas le paquet xerces?
Mise à jour
Je l'ai fait comme suggéré ici et maintenant j'ai une nouvelle erreur,
java.lang.NoClassDefFoundError: Could not initialize class com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl
qui est une classe de l'un des pots ai supprimé qui contient SAXParserFactory: (
La solution
Il semble que vous avez supprimé le mauvais JAR. Le ClassCastException original a été rapporté lorsqu'une instance de SAXParserFactoryImpl (qui est un sous-type de SAXParserFactory) est en cours de distribution à SAXParserFactory.
L'exception est plus susceptible d'être dû au fait qu'il ya deux cas de SAXParserFactory plutôt que deux instances de SAXParserFactoryImpl étant chargés dans la machine virtuelle Java. Au moment de la coulée, le SAXParserFactory chargé par un autre classloader a été retourné à l'exception résultant. Le correctif est donc d'identifier JARs dans votre classpath qui ont des versions contradictoires de SAXParserFactory. Suppression de la mise en œuvre de l'analyseur lui-même peut-être pas sage, si Commons digesteur est à la recherche d'une mise en œuvre particulière.
Autres conseils
Je devine ... Vous utilisez JBoss 5.1. Si oui alors il est question de l'analyseur XML et classloading. Vous devez définir jboss-classloading.xml
Voir http://www.coderanch.com/t/523519/JBoss/Cast et http: // www. mastertheboss.com/jboss-application-ser...oss-5-classloading-issues.html