2010-09-30 14 views
6

Mam dziwny problem, gdy próbuję uruchomić maven kompilacji, która używa wtyczki jaxb2 do obsługi kodeków JAXB (patrz stos stack poniżej). Najlepszym, co mogę sobie wyobrazić, jest to, że istnieje pewna implementacja DTMManager, która jest klasą ładowaną z innego JAR-a niż w Xalan-2.7.1; jednak zweryfikowaliśmy, że ścieżka klas używana do uruchamiania jaxb: generuj cel ma tylko jeden xalan-2.7.1.jar zawierający DTMManager lub DTMManagerDefault - więc nie mam pojęcia, co jeszcze może przeszkadzać .Wyjątek ClassCastException podczas rzutowania DTMManagerDefault do DTMManager podczas maven jaxb codegen

Jeden końcowy punkt danych: nasza kompilacja określa profil "migawki", który służy jedynie do zgarniania źródeł (przy użyciu wtyczki maven-source) i publikowania ich jako artefaktów. Scenariusz awarii I opisany powyżej tylko występuje, gdy ten profil jest określony jako dodatek do wartości domyślnej.

Używam Mavena 2.2.1 działającego na 64-bitowym jądrze Sun 1.6.0_21 Sun na Linux x64 (Fedora 13) - patrz poniżej stacktrace dla informacji "mvn -v".

Jakieś pomysły dotyczące problemu i/lub sposobu jego debugowania? Zostało mi żal powodując w ciągu ostatnich kilku dni i jest teraz blokuje postęp :(

java.lang.ClassCastException: org.apache.xml.dtm.ref.DTMManagerDefault cannot be cast to org.apache.xml.dtm.DTMManager 
    at org.apache.xml.dtm.DTMManager.newInstance(DTMManager.java:137) 
    at org.apache.xpath.XPathContext.<init>(XPathContext.java:102) 
    at org.apache.xpath.jaxp.XPathImpl.eval(XPathImpl.java:207) 
    at org.apache.xpath.jaxp.XPathImpl.evaluate(XPathImpl.java:281) 
    at com.sun.tools.xjc.reader.internalizer.Internalizer.buildTargetNodeMap(Internalizer.java:224) 
    at com.sun.tools.xjc.reader.internalizer.Internalizer.buildTargetNodeMap(Internalizer.java:289) 
    at com.sun.tools.xjc.reader.internalizer.Internalizer.transform(Internalizer.java:134) 
    at com.sun.tools.xjc.reader.internalizer.Internalizer.transform(Internalizer.java:96) 
    at com.sun.tools.xjc.reader.internalizer.DOMForest.transform(DOMForest.java:448) 
    at com.sun.tools.xjc.ModelLoader.buildDOMForest(ModelLoader.java:342) 
    at com.sun.tools.xjc.ModelLoader.loadXMLSchema(ModelLoader.java:374) 
    at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:167) 
    at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:113) 
    at org.jvnet.jaxb2.maven2.XJC2Mojo.runXJC(XJC2Mojo.java:1119) 
    at org.jvnet.jaxb2.maven2.XJC2Mojo.execute(XJC2Mojo.java:720) 
... 

mvn -v:

# mvn -v 
Apache Maven 2.2.1 (r801777; 2009-08-06 14:16:01-0500) 
Java version: 1.6.0_21 
Java home: /usr/java/jdk1.6.0_21/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux" version: "2.6.33.3-85.fc13.x86_64" arch: "amd64" Family: "unix" 

Odpowiedz

13

Rozwiązaniem jest wyszukanie wszystkich zależnościach na Xalan i xercesImpl w .. classpath zależności te powinny być wyłączone

Updated

znalazłem odpowiedź tak - patrz http://www.mail-archive.com/[email protected]/msg07295.html

Had a look at this closely and figured it was due to a classpath class 
due to Sun bundling an older version of Xalan jar. 
I have disabled this test until we come up with a decent solution. 

Rajith 
+0

Witam, czy możesz wyjaśnić, jak mogę to zrobić? Mam taki sam problem z Debianem + Jboss i nie mogę go naprawić na Linuksie, ale działa dobrze na Windows/Mac. Dzięki. –

+1

Uruchom {zależność mvn: drzewo> dependencies.txt}, a następnie dodaj wykluczenie do swoich zależności dla słoików, które powinny zostać wykluczone. – raisercostin

3

aby wykluczyć xalan i xercesImpl zależności w Maven:

<dependency> <!-- ClassNotFoundException: org.jaxen.dom.DOMXPath --> 
     <groupId>jaxen</groupId> 
     <artifactId>jaxen</artifactId> 
     <version>1.1.3</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>maven-findbugs-plugin</artifactId> 
       <groupId>maven-plugins</groupId> 
      </exclusion> 
      <exclusion> 
       <artifactId>maven-cobertura-plugin</artifactId> 
       <groupId>maven-plugins</groupId> 
      </exclusion> 
      <!-- ClassCastException: org.apache.xml.dtm.ref.DTMManagerDefault -> org.apache.xml.dtm.DTMManager --> 
      <exclusion> 
       <artifactId>xercesImpl</artifactId> 
       <groupId>xerces</groupId> 
      </exclusion> 
      <exclusion> 
       <artifactId>xalan</artifactId> 
       <groupId>xalan</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

Zobacz także https://community.jboss.org/wiki/FreeMarkerAndJBossAS7.

Powiązane problemy