ClassCastException in fusione DTMManagerDefault in DTMManager durante Maven JAXB Codegen
-
26-09-2019 - |
Domanda
Sto avendo un problema strano quando si tenta di eseguire una build Maven che utilizza il plugin jaxb2 fare JAXB codegen (vedi stacktrace sotto). Il meglio che posso figura è che c'è qualche attuazione DTMManager che viene caricato da un classe JAR diverso da quello in xalan-2.7.1; tuttavia, ho verificato che il percorso di classe che viene utilizzato per l'esecuzione del JAXB: generare obiettivo ha solo quello xalan-2.7.1.jar che contiene un DTMManager o un DTMManagerDefault - quindi non ho idea di cosa altro potrebbe essere sempre nel modo .
Un ultimo punto di dati: la nostra generazione specifica una 'istantanea' profilo, che serve in realtà solo alle JAR anche le fonti (usando Maven-source-plugin) e pubblicarle come artefatti. Lo scenario fallimento che ho descritto sopra solo si verifica quando questo profilo viene specificato in aggiunta a quello di default.
sto usando Maven 2.2.1 in esecuzione su di Sun a 64 bit JDK 1.6.0_21 su Linux x64 (Fedora 13) -. Vedo sotto lo StackTrace per il 'mvn -v' informazioni
Tutte le idee su ciò che il problema può essere e / o come fare per il debug esso? Questo è stato mi ha causato dolore per i giorni scorsi ed è ora bloccando il progresso: (
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"
Soluzione
La soluzione è la ricerca di tutte le dipendenze da Xalan e xercesImpl nel classpath. Queste dipendenze dovrebbero essere esclusi.
Aggiornamento
Ho trovato una risposta come questo - vedi http: // www.mail-archive.com/dev@qpid.apache.org/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
Altri suggerimenti
Per escludere le dipendenze xalan
e xercesImpl
in 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>
Vedi anche https://community.jboss.org/wiki/FreeMarkerAndJBossAS7 .