2010-08-05 14 views
0

J'utilise JBOSS 5.1.0.GA et HibernateErreurs SaxParser avec Hibernate et JBoss - versions en conflit?

lorsque je tente de se connecter à la base de données que je reçois les erreurs suivantes

10:21:03,042 INFO [Version] Hibernate Commons Annotations 3.1.0.GA 
10:21:03,049 INFO [Configuration] configuring from resource: /hibernate.cfg.xml 
10:21:03,049 INFO [Configuration] Configuration resource: /hibernate.cfg.xml 
10:21:03,077 INFO [STDOUT] Warning: Caught exception attempting to use SAX to load a SAX XMLReader 
10:21:03,077 INFO [STDOUT] Warning: Exception was: java.lang.ClassCastException: org.apache.xerces.parsers.SAXParser cannot be cast to org.xml.sax.XMLReader 
10:21:03,077 INFO [STDOUT] Warning: I will print the stack trace then carry on using the default SAX parser 
10:21:03,077 ERROR [STDERR] java.lang.ClassCastException: org.apache.xerces.parsers.SAXParser cannot be cast to org.xml.sax.XMLReader 
10:21:03,078 ERROR [STDERR]  at org.xml.sax.helpers.XMLReaderFactory.loadClass(Unknown Source) 
10:21:03,078 ERROR [STDERR]  at org.xml.sax.helpers.XMLReaderFactory.createXMLReader(Unknown Source) 
10:21:03,078 ERROR [STDERR]  at org.dom4j.io.SAXHelper.createXMLReader(SAXHelper.java:83) 
10:21:03,078 ERROR [STDERR]  at org.dom4j.io.SAXReader.createXMLReader(SAXReader.java:894) 
10:21:03,078 ERROR [STDERR]  at org.dom4j.io.SAXReader.getXMLReader(SAXReader.java:715) 
10:21:03,078 ERROR [STDERR]  at org.dom4j.io.SAXReader.read(SAXReader.java:435) 
10:21:03,078 ERROR [STDERR]  at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1518) 

puis

10:21:03,386 INFO [STDOUT] 10:21:03,382 ERROR [DatabaseManager] Error intialising Hibernate 
org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1528) 
    at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:1035) 
    at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:64) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1462) 
    at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1017) 
    at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:64) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1448) 


Caused by: org.dom4j.DocumentException: SAX2 driver class org.apache.xerces.parsers.SAXParser does not implement XMLReader Nested exception: SAX2 driver class org.apache.xerces.parsers.SAXParser does not implement XMLReader 
    at org.dom4j.io.SAXReader.read(SAXReader.java:484) 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1518) 

Je les dépendances suivantes : -

hibernate-annotations 3.4.0.GA hibernate-commons-annotations 3.1.0.GA hibernate-core 3.3.0.SP1

Je soupçonne que j'ai un conflit entre un jar dans le jboss lib et un dans mes dépendances. quelqu'un peut-il suggérer ce que cela pourrait être?

+0

emballez-vous des pots de mise en veille prolongée dans votre application? Si oui, pourquoi? –

+0

nous avons les dépendances hibernate avec la portée "compiler". si je supprime la dépendance alors mvn clean install échoue (il échoue sur le jaxb-schemagen: générer avec un message "classe n'existe pas" pour chacune des classes du modèle de données) – Rainyday

+0

Que faire si vous utilisez une portée 'fournie'? –

Répondre

0

J'ai eu à peu près la même erreur en essayant d'exécuter Hibernate 4.0.0.CR6 dans JBoss 5.0.1.

L'analyseur nécessaire par Hibernate pour analyser les fichiers de configuration semble être fourni par les bibliothèques approuvées de jboss (/lib/endorsed/xercesImpl.jar je crois) et mise en veille prolongée de dépendance xml-apis interféré en quelque sorte avec eux.

Ne pas emballage xml-apis .jar dans l'archive générée (.war dans mon cas) avéré pour résoudre le problème. Pour ce faire, je l'emportaient sur la portée de la dépendance dans le .pom du projet générant l'archive (remplaçant nulle part ailleurs ne serait pas faire parce que fourni champ d'application est pas transitive):

<dependency> 
    <groupId>xml-apis</groupId> 
    <artifactId>xml-apis</artifactId> 
    <version>1.0.b2</version> 
    <scope>provided</scope> 
</dependency>