web-dev-qa-db-fra.com

wildfly 10: exception Java.lang.ClassCast: org.dom4j.DocumentFactory ne peut pas être converti en org.dom4j.DocumentFactory

J'ai une application maven qui fonctionne très bien dans wildfly 8.2, mais quand je l'ai déployée dans wildfly 10, cette erreur s'est produite:

[2016-02-21 11:22:08,411] Artifact SaramadIssueTracking:war exploded: Error during artifact deployment. See server log for details.
[2016-02-21 11:22:08,411] Artifact SaramadIssueTracking:war exploded: Java.lang.Exception: {"WFLYCTL0080: Failed services" =>
 {"jboss.persistenceunit.SaramadIssueTracking-1#SaramadIssueTracking" => "org.jboss.msc.service.StartException in service 
 jboss.persistenceunit.SaramadIssueTracking-1#SaramadIssueTracking: Java.lang.ClassCastException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory
    Caused by: Java.lang.ClassCastException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory"}}

J'ai lu ceci et il n'y avait pas d'autre bibliothèque dom4j. J'ai aussi lu ceci et l'ai fait, mais après avoir enlevé dom4j, j'ai eu cette erreur:

    [2016-02-21 01:46:38,384] Artifact SaramadIssueTracking:war exploded: Error during artifact deployment. See server log for details.
[2016-02-21 01:46:38,385] Artifact SaramadIssueTracking:war exploded: Java.lang.Exception: {"WFLYCTL0080: Failed services" => {"jboss.undertow.deployment.default-server.default-Host./" => "org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-Host./: Java.lang.RuntimeException: Java.lang.NullPointerException
    Caused by: Java.lang.RuntimeException: Java.lang.NullPointerException
    Caused by: Java.lang.NullPointerException"}}

voici mon pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>ir.farzanehfar</groupId>
    <artifactId>SaramadIssueTracking</artifactId>
    <version>1</version>
    <packaging>war</packaging>

    <name>SaramadIssueTracking</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <repositories>
        <repository>
            <id>SimpleCaptchaRepository</id>
            <url>http://repo.jfrog.org/artifactory/libs-releases/</url>
        </repository>
    </repositories>

    <dependencies>

        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
            <version>5.2</version>
        </dependency>

        <dependency>
            <groupId>org.primefaces.themes</groupId>
            <artifactId>all-themes</artifactId>
            <version>1.0.10</version>
        </dependency>

        <dependency>
            <groupId>org.primefaces.extensions</groupId>
            <artifactId>primefaces-extensions</artifactId>
            <version>3.1.0</version>
        </dependency>

        <dependency>
            <groupId>org.primefaces.extensions</groupId>
            <artifactId>resources-ckeditor</artifactId>
            <version>3.1.0</version>
        </dependency>

        <!-- for JPA, use hibernate-entitymanager instead of hibernate-core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.1.0.Final</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-ehcache</artifactId>
            <version>5.1.0.Final</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>12.0</version>
        </dependency>

        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.1</version>
        </dependency>

        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3</version>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.2</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>

        <dependency>
            <groupId>com.jhlabs</groupId>
            <artifactId>imaging</artifactId>
            <version>01012005</version>
        </dependency>

        <dependency>
            <groupId>axis</groupId>
            <artifactId>axis</artifactId>
            <version>1.4</version>
        </dependency>

        <dependency>
            <groupId>org.Apache.axis</groupId>
            <artifactId>axis-jaxrpc</artifactId>
            <version>1.4</version>
        </dependency>

        <dependency>
            <groupId>org.Apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.11</version>
        </dependency>

        <dependency>
            <groupId>org.Apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.11</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webXml>src\main\webapp\WEB-INF\web.xml</webXml>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
33
h.f

Je viens de faire toutes les dépendances d'hibernation à condition que la portée et le problème soient résolus!

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.1.0.Final</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.2.4.Final</version>
            <scope>provided</scope>
        </dependency>

        <!-- for JPA, use hibernate-entitymanager instead of hibernate-core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.1.0.Final</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-ehcache</artifactId>
            <version>5.1.0.Final</version>
            <scope>provided</scope>
        </dependency>
43
h.f

ajouter la dépendance dom4j à pom avec la portée fournie

<dependency>
   <groupId>dom4j</groupId>
   <artifactId>dom4j</artifactId>
   <version>1.6.1</version>
   <scope>provided</scope>
</dependency>
13
Radzhabov Kirill

J'ai récemment eu le même problème avec la bibliothèque dom4j et Wildfly 10. J'ai trouvé cet article (en portugais) et remplacé la bibliothèque dom4j fournie avec Wildfly par celle téléchargée sur le Maven Central et qui a résolu le problème.

Le fichier jar est situé dans $JBOSS_HOME/modules/system/layers/base/org/dom4j/main, il vous suffit de le remplacer par le fichier téléchargé. Dans mon cas, le fichier était dom4j-1.6.1.jar. Je suppose que si vous modifiez la version (à l’époque de cet article, il s’agit de la dernière version), vous devez également modifier le fichier module.xml dans le même dossier, mais je n’ai pas essayé.

Auparavant, j'essayais aussi la réponse personnelle de h.f mais je n'avais pas résolu mon problème.

J'espère que cela contribue à quelqu'un avec le même problème. Meilleures salutations

9
Alvaro Pedraza

Si vous utilisez hibernate-core comme dépendance, vous devez vous assurer que la portée est fournie. L'artéfact d'hibernation a une version de dom4j en tant que dépendance, en modifiant le <scope> en provided pour résoudre le conflit.

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.1.Final</version>
        <type>jar</type>
        <scope>provided</scope>
    </dependency>

J'espère que cela vous fait sourire :) 

8
Rasheed

Les autres suggestions ici ne fonctionnaient pas pour moi ou ne s'appliquaient pas à mon projet. J'ai trouvé une solution possible dans ce blog . En gros, il est dit d’ajouter Dependencies: org.dom4j export à {your war}/META-INF/MANIFEST.MF. Je lance Wildfly 10 et cela se fait à la fois dans mon oreille et le projet ejb semble avoir fonctionné.

3
Bjørn Stenfeldt

J'ai eu le même problème, mais ce que j'ai finalement fait, c'est supprimer les bibliothèques (redondantes) Hibernate de pom.

Comme Wildfly utilise déjà Hibernate en tant que fournisseur JPA ( https://docs.jboss.org/author/display/WFLY10/JPA+Reference+Guide#JPAReferenceGuide-Introduction ), vous n’avez pas besoin de fournir de tels cours à tous (sauf si vous utilisez directement les classes Hibernate). 

Donc, la configuration minimale fonctionne bien:

<project>
  <dependencies>
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
</project>

Et persistence.xml

<persistence xmlns="http://Java.Sun.com/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://Java.Sun.com/xml/ns/persistence http://Java.Sun.com/xml/ns/persistence/persistence_2_0.xsd"
         version="2.0">
<persistence-unit name="mysql_hbm" transaction-type="JTA">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <jta-data-source>Java:/jdbc/MySqlDS</jta-data-source>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
        <property name="hibernate.show_sql" value="true"/>
    </properties>
</persistence-unit>

Testé sur Wildfly 10.

3
Pavlos

Exclure les dépendances dom4j hors de celles en veille prolongée.

Vérifiez dans acme.war/WEB-INF/lib qu'il n'y a pas de dom ***. Jar

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.3.8.Final</version>
    <exclusions>
        <exclusion>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.3.8.Final</version>
    <exclusions>
        <exclusion>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
        </exclusion>
    </exclusions>
</dependency>
2
StanislavKo

l'ajout ci-dessous dans 'jboss-deployment-structure.xml' sous META-INF de mon fichier ear a résolu le problème et fonctionnait à la fois dans weblogic et wildfly

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="org.dom4j" export="true"/>
        </dependencies>
    </deployment>
</jboss-deployment-structure>
2
Ahmed

Avait le même problème, mais je l'ai résolu en utilisant le démarrage rapide officiel hibernate5 disponible ici https://github.com/wildfly/quickstart/tree/11.x/hibernate5

Essayez le démarrage rapide de hibernate5, cela devrait fonctionner.

Regardez le pom.xml, il contient

<!-- Import the JPA API, we use provided scope as the API is included in WildFly -->
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <scope>provided</scope>
    </dependency>

    <!-- Bean Validation Implementation -->
    <!-- Provides portable constraints such as @Email -->
    <!-- Hibernate Validator is shipped in WildFly -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <scope>provided</scope>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <!--Import dependencies to hibernate packages(eg. hibernate-core)
        depending on features you want to use like Hibernate Session used in the
        quickstart -->
    <!--please note that scope is provided as these jars are shipped
        with as7 -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <scope>provided</scope>
    </dependency>

Incluez cela et cela fonctionnera. Je devais annuler le déploiement de mon application et redémarrer Wildfly.

Si vous devez utiliser une autre version d'Hibernate que celle fournie dans Wildfly, suivez la procédure officielle pour mettre à jour la version d'Hibernate dans Wildly , section Remplacement des fichiers jar actuels d'Hibernate 5.x par une version plus récente .

1
thomas.g

Je travaille avec Eclipse Neon.3 (4.6.3) et Wildfly 10.1.0.

Ce qui a fonctionné pour moi a été de restaurer un fichier standalone.xml plus ancien à partir du répertoire <wildfly>\standalone\configuration\standalone_xml_history. J'ai arrêté le serveur, puis j'ai remplacé le fichier de configuration actuel par une sauvegarde plus ancienne.

Je n'ai aucune idée de ce qui a changé dans la configuration (je ne l'ai pas modifiée manuellement), mais il semble que le message d'erreur puisse également être causé par des modifications dans standalone.xml.

Peut-être que cette information est utile, au cas où aucune autre solution ne fonctionnerait pour vous.

0
user1438038

Il y a deux façons.

1 Vous créez un dossier META-INF dans le dossier webapp. Créez ensuite jboss-deployment-structure.xml dans le dossier META-INF.

jboss-deployment-structure.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="org.dom4j"/>
        </dependencies>
    </deployment>
</jboss-deployment-structure>

ou

2 Si vous avez ajouté hibernate-core dans pom xml, vous devez éditer ceci.

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.1.Final</version>
        <type>jar</type>
        <scope>provided</scope>
    </dependency>
0
Oguzhan Cevik

Votre EAR peut contenir le fichier de configuration Spring jpa en double, vérifier et supprimer le fichier en double.

0
gokul

Dans mon cas, j'ai aidé à supprimer les fichiers de/data et/tmp

0
Marcin Dąbrowski