39

I have a maven application that works fine in wildfly 8.2, but when Ideployed it in wildfly 10 this error happened:

[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"}}

I read this and there was no other dom4j library. I also read this and did it, but after removing dom4j, I got this error:

    [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"}}

here is my 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>
Community
  • 1
  • 1
h.f
  • 951
  • 1
  • 10
  • 15
  • 2
    Too less information for helping, but ... Such an exception is thrown when the same class is loaded by different class loaders. Maybe you can find out yourself why different class loaders load that class. – Seelenvirtuose Feb 21 '16 at 08:35

14 Answers14

46

I just made all hibernate dependencies provided scope and problem solved!

        <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>
h.f
  • 951
  • 1
  • 10
  • 15
15

add dependency dom4j to pom with scope provided

<dependency>
   <groupId>dom4j</groupId>
   <artifactId>dom4j</artifactId>
   <version>1.6.1</version>
   <scope>provided</scope>
</dependency>
  • Thanks @Radzhabov-Kirill, I tried this before but as mentioned before NullPointerException was thrown – h.f Feb 28 '16 at 04:42
  • 2
    This worked for me, but I also had to delete my orphaned .war files from $WILDFLY_HOME/standalone/tmp, as mentioned by mwangi. – Tad Dec 01 '16 at 17:54
11

I had recently the same problem with the dom4j library and Wildfly 10. I found this post (in portuguese) and replaced the dom4j library that comes with Wildfly with the one downloaded from the Maven Central, and that solved the problem.

The jar is located in $JBOSS_HOME/modules/system/layers/base/org/dom4j/main, you just replace it with the downloaded file, in my case the file was dom4j-1.6.1.jar. I suppose that if you change the version (at the time of this post this is the last version) you should also modify the module.xml file in the same folder, but I've not tried.

Previously I also tried the self-answer from h.f but didn't solved my problem.

Hope this contributes to someone with the same problem. Best regards

Community
  • 1
  • 1
Alvaro Pedraza
  • 1,096
  • 3
  • 18
  • 40
  • 3
    replacing dom4j-1.6.1.jar helped for me, even though the one that came with wildfly seems identical to that from maven central. same size and equal according to `cmp`. – jon martin solaas Sep 20 '16 at 20:24
  • 1
    replacing it with the exact same version on wildfly 11 worked for me as well. i guess this is related to the date of the file, so just touching it might work. – Vinicius Pinto Jan 07 '18 at 14:03
  • An alternative to overwriting wildfly jars, is to include the dom4j.jar in your app lib and configure the deployment to load this jar instead of the provided by the server: https://issues.jboss.org/browse/WFLY-5549?focusedCommentId=13173976&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13173976 – SebaGra Apr 04 '18 at 14:49
  • @sebaGra, good information. Your solution makes the application a little bit more *"server agnostic"* – Alvaro Pedraza Apr 04 '18 at 15:25
  • I also replaced the jar in my local Wildfly instance - all works correctly. But the same trick on wildfly on docker does not work. – Adam Oct 26 '18 at 12:05
11

If you are using hibernate-core as a dependency, you should make sure the scope is provided. The hibernate artifact has a version of dom4j as a dependency, by making changing the <scope> to provided resolves the conflict.

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

I hope this makes you smile :)

Rasheed
  • 723
  • 10
  • 17
  • 6
    Ola. I was struggling with this issue for hours before stumbling upon your answer. I am using wildfly 10.1.0.Final and 10.0.0.Final . I stopped wildfly. Then I deleted the contents of the following folders `$WILDFLY_HOME/standalone/data`, `$WILDFLY_HOME/standalone/data`, `$WILDFLY_HOME/standalone/tmp` After that, I started wildfly with the minimal config as shown in the quickstart - https://github.com/wildfly/quickstart/tree/10.x/hibernate5 and my application worked! – mwangi Nov 03 '16 at 22:16
  • One thing i know for sure is, the dom4j library is being added twice during deployment. Also make sure you dont previously have the project deployed before redeploying again. This might help. I am still researching the exact cause of this and how to always avoid falling into this annoying pitfal – Rasheed Nov 03 '16 at 23:14
  • @mwangi: In your comment, you are stating ``$WILDFLY_HOME/standalone/data`` twice. Did you mean to change one of these folders after copy and pasting? – user1438038 May 17 '17 at 11:17
  • 4
    @user1438038 Sorry.. that was a typo. The folders to delete are `$WILDFLY_HOME/standalone/data` , `$WILDFLY_HOME/standalone/tmp` & `$WILDFLY_HOME/standalone/log`. Be sure to undeploy all applications first, otherwise wildfly won't start properly. – mwangi May 17 '17 at 13:38
3

I had the same problem but finally what I did is to remove (redundant) Hibernate libraries from pom.

As Wildfly is already using Hibernate as JPA provider (https://docs.jboss.org/author/display/WFLY10/JPA+Reference+Guide#JPAReferenceGuide-Introduction), you do not need to provide such classes at all (unless you are directly using Hibernate classes).

So the minimal config is working fine:

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

And 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>

Tested on Wildfly 10.

Pavlos
  • 31
  • 3
3

The other suggestions here either did not work for me or did not apply to my project. I found a possible solution in this blog. Basically it says to add Dependencies: org.dom4j export to {your war}/META-INF/MANIFEST.MF. I'm running Wildfly 10 and doing so in both my ear and ejb project seems to have worked.

Bjørn Stenfeldt
  • 1,170
  • 1
  • 15
  • 21
2

Exclude dependency dom4j out of hibernate ones.

Check in resulting acme.war/WEB-INF/lib that there is no 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>
StanislavKo
  • 127
  • 1
  • 5
2

adding below in 'jboss-deployment-structure.xml' under META-INF of my ear file resolved the issue and working in both weblogic & wildfly

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

In my case helped remove files from /data and /tmp

1

Had the same problem, but I solved it using the hibernate5 official quick start available here https://github.com/wildfly/quickstart/tree/11.x/hibernate5

Try the hibernate5 quick start, it should work.

Have a look at the pom.xml, it contains

<!-- 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>

Include that and it will work. I had to undeploy my app and restart wildfly.

If you need to use another Hibernate version than the one provided in Wildfly, follow the official procedure to update the Hibernate version in Wildly, section Replacing the current Hibernate 5.x jars with a newer version.

thomas.g
  • 3,634
  • 3
  • 24
  • 35
1

There are two ways.

1 You create a META-INF folder in webapp folder. Later create jboss-deployment-structure.xml in META-INF folder.

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>

or

2 if you added hibernate-core in pom xml then you edit this.

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

I am working with Eclipse Neon.3 (4.6.3) and Wildfly 10.1.0.

What worked for me, was to restore an older standalone.xml file from the <wildfly>\standalone\configuration\standalone_xml_history directory. I shut down the server and then replaced the current configuration file with an older backup.

I have no idea what changed in the configuration (I did not alter it manually), but it seems like the error message can be caused by changes in standalone.xml as well.

Maybe this information is helpful, in case none of the other solutions works for you.

user1438038
  • 5,319
  • 6
  • 49
  • 78
0

Your EAR may contain the duplicate spring jpa configuration file, check and remove the duplicate file

gokul
  • 115
  • 1
  • 13
-1

I had the same problem. I followed this instruction and it worked. http://blog.triona.de/development/java/org-dom4j-documentfactory-classcastexception-on-hudson.html

According to this post https://issues.jboss.org/browse/WFLY-5549 we need to create a file named boss-deployment-structure.xml with the content

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

Then place it into ../wildfly/modules/system/layers/base/org/jboss/as/product/wildfly-full/dir/META-INF

I hope this would help.

Arun
  • 1
  • 1