2016-02-21 19 views
24

Mam aplikację maven, która działa dobrze w Wildfly 8,2, ale kiedy Ideployed to w Wildfly 10 ten błąd się stało:wildfly 10: java.lang.ClassCastException: org.dom4j.DocumentFactory nie można przesłać do org.dom4j.DocumentFactory

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

Przeczytałem this i nie było innej biblioteki dom4j. Czytałem również this i zrobił to, ale po usunięciu dom4j, mam ten błąd:

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

Oto moja 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> 
+2

zbyt mało informacji za pomoc, ale ... Taki jest wyjątek, gdy ta sama klasa jest ładowany przez różnych ładowarek klasy. Może sam się przekonasz, dlaczego różne ładowarki klas ładują tę klasę. – Seelenvirtuose

Odpowiedz

30

Właśnie podałem wszystkie zależności od hibernacji, pod warunkiem, że zakres i problem rozwiązany!

 <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> 
+0

To właśnie rozwiązało w końcu mój problem, używając Arquilliana podczas dodawania wszystkich zależności między POM. – Henry

+1

Wszystkie moje zależności hibernacji mają już zasięg, ale nadal otrzymuję ten błąd. – Magick

+0

Rzeczywiście, dodanie pod warunkiem rozwiązuje sytuację – mani

9

dodać zależnościach dom4j do pom z zakresem przewidzianym

<dependency> 
    <groupId>dom4j</groupId> 
    <artifactId>dom4j</artifactId> 
    <version>1.6.1</version> 
    <scope>provided</scope> 
</dependency> 
+0

Dzięki @ Radzhabov-Kirill, próbowałem tego wcześniej, ale jak wspomniano wcześniej, wyrzucono wyjątek NullPointerException. –

+1

To działało dla mnie, ale musiałem też usunąć moje pliki .war z $ WILDFLY_HOME/standalone/tmp, jak wspomniał mwangi. – Tad

3

Miałem ten sam problem, ale w końcu to, co zrobiłem, to usunięcie (redundantnych) bibliotek Hibernate z pom.

Ponieważ Wildfly już korzysta z Hibernuj jako dostawca JPA (https://docs.jboss.org/author/display/WFLY10/JPA+Reference+Guide#JPAReferenceGuide-Introduction), nie musisz w ogóle dostarczać takich klas (chyba że używasz bezpośrednio klas Hibernate).

więc minimalne config działa poprawnie:

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

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

Testowane na JBoss Application Server 10.

7

Miałem niedawno ten sam problem z biblioteka dom4j i Wildfly 10. Znalazłem this post (po portugalsku) i zastąpił bibliotekę dom4j dostarczoną razem z Wildfly z tą pobraną z Maven Central, która rozwiązała problem.

Słoik znajduje się w $JBOSS_HOME/modules/system/layers/base/org/dom4j/main, po prostu zamieniasz go na pobrany plik, w moim przypadku plik był dom4j-1.6.1.jar. Przypuszczam, że jeśli zmienisz wersję (w momencie tego posta jest to ostatnia wersja), powinieneś także zmodyfikować plik module.xml w tym samym folderze, ale nie próbowałem.

Wcześniej próbowałem również samoobsługi od h.f, ale nie rozwiązałem mojego problemu.

Mam nadzieję, że przyczyni się to do kogoś z tym samym problemem. Pozdrawiam

+2

Zastąpienie dom4j-1.6.1.jar pomogło mi, mimo że ten, który pojawił się z dziką muchą, wydaje się identyczny z tym z maven central. ten sam rozmiar i równy według 'cmp'. –

+0

zastąpienie go dokładnie tą samą wersją na Wildfly 11 również mi pomogło. Myślę, że jest to związane z datą pliku, więc samo dotknięcie może działać. –

1

Inne sugestie tutaj albo nie działały dla mnie, albo nie dotyczyły mojego projektu. Znalazłem możliwe rozwiązanie w this blog. Zasadniczo mówi, aby dodać Dependencies: org.dom4j export do {your war}/META-INF/MANIFEST.MF. Używam Wildfly 10, a robiąc to w moim uchu i projekcie ejb, zadziałało.

7

Jeśli używasz jądra hibernacji jako zależności, powinieneś upewnić się, że zakres jest zapewniony. Artefakt hibernacji ma wersję dom4j jako zależność, zmieniając konflikt na <scope> na provided.

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

Mam nadzieję, że to sprawia, że ​​uśmiech :)

+3

Ola. Zmagałem się z tym problemem przez wiele godzin, zanim natknąłem się na twoją odpowiedź. Używam wildfly 10.1.0.Final i 10.0.0.Final. Zatrzymałem dziką muchę. Następnie usunąłem zawartość następujących folderów '$ WILDFLY_HOME/standalone/data',' $ WILDFLY_HOME/standalone/data', '$ WILDFLY_HOME/standalone/tmp' Następnie uruchomiłem wildfly z minimalną konfiguracją, jak pokazano w the quickstart - https://github.com/wildfly/quickstart/tree/10.x/hibernate5 i moja aplikacja działała! – mwangi

+0

Jedno jest pewne - biblioteka dom4j jest dodawana dwa razy podczas wdrażania. Upewnij się też, że wcześniej nie wdrożyłeś projektu przed ponownym przeniesieniem. To może pomóc. Nadal badam dokładną przyczynę tego i jak zawsze unikać wpadania w ten denerwujący pitfal – Rasheed

+0

@mwangi: W twoim komentarzu dwa razy podano '' WILDFLY_HOME/standalone/data''. Czy chcesz zmienić jeden z tych folderów po skopiowaniu i wklejeniu? – user1438038

1

Wykluczanie zależnościach dom4j z nich hibernacji.

Przyjazd wynikające acme.war/WEB-INF/lib, że nie ma 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> 
1

miał ten sam problem, ale rozwiązać go za pomocą hibernate5 oficjalny szybkie dostępny Kliknij tutaj https://github.com/wildfly/quickstart/tree/11.x/hibernate5

Spróbuj szybko uruchomić hibernate5, powinien działać.

spojrzeć na pom.xml, zawiera

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

Dołącz że i to będzie działać. Musiałem wycofać aplikację i ponownie uruchomić program wildfly.

Jeśli trzeba użyć innej wersji hibernacji niż dostarczony w JBoss Application Server, wykonaj oficjalną procedure to update the Hibernate version in Wildly, sekcję zastąpienie obecnego słoiki Hibernate 5.x z nowszej wersji.

0

dodanie poniżej w 'JBoss rozmieszczeniem-structure.xml' pod META-INF mojego pliku EAR rozwiązany i pracy w obu WebLogic & JBoss Application Server

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

Pracuję z Eclipse (Neon.3 4.6.3) i Wildfly 10.1.0.

Co zadziałało dla mnie, to przywrócić starszy plik standalone.xml z katalogu . Wyłączyłem serwer, a następnie zastąpiłem bieżący plik konfiguracyjny starszą kopią zapasową.

Nie mam pojęcia, co zmieniło się w konfiguracji (nie zmieniłem go ręcznie), ale wygląda na to, że komunikat o błędzie może być również spowodowany zmianami w standalone.xml.

Może ta informacja jest przydatna, na wypadek gdyby żadne z pozostałych rozwiązań nie zadziałało.

0

ucha może zawierać duplikat pliku konfiguracyjnego wiosna JPA, sprawdzić i usunąć duplikaty plików

Powiązane problemy