ClassCastException dans la coulée DTMManagerDefault dans DTMManager pendant maven JAXB codegen

StackOverflow https://stackoverflow.com/questions/3832414

Question

Je vais avoir un problème étrange lorsque vous essayez de lancer un build Maven qui utilise le plugin jaxb2 pour faire JAXB codegen (voir stacktrace ci-dessous). Le mieux que je peux comprendre est qu'il ya une mise en œuvre de DTMManager qui est d'être classe chargée d'un autre JAR que celui-xalan 2.7.1; cependant, j'ai vérifié que le classpath qui est utilisé pour exécuter le JAXB: goal generate a seulement une xalan-2.7.1.jar qui contient un DTMManager ou un DTMManagerDefault - donc je n'ai pas la moindre idée de ce qui pourrait bien être prendre le chemin .

Un point de données final: notre build spécifie un « instantané » profil, qui sert vraiment qu'à JAR aussi les sources (à l'aide-source-plugin Maven) et les publier sous forme d'artefacts. Le scénario d'échec que je décrit ci-dessus uniquement se produit lorsque ce profil est spécifié en plus de la valeur par défaut.

J'utilise Maven 2.2.1 en cours d'exécution sur Linux x64 64 bits JDK de Sun 1.6.0_21 (Fedora 13) -. Voir ci-dessous la stacktrace pour le 'mvn -v' info

Toutes les idées sur ce que le problème peut être et / ou comment aller sur le débogage il? Cela a été me cause la douleur depuis quelques jours et il bloque maintenant les progrès: (

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"
Était-ce utile?

La solution

La solution consiste à rechercher toutes les dépendances sur Xalan et xercesImpl dans le classpath. Ces dépendances doivent être exclus.

Mise à jour

J'ai trouvé une réponse comme ça - voir 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

Autres conseils

Pour exclure les dépendances de xalan et xercesImpl 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>

Voir aussi https://community.jboss.org/wiki/FreeMarkerAndJBossAS7 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top