Classe exception Cast: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

StackOverflow https://stackoverflow.com/questions/4278213

  •  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: (

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top