Java maven jaxb codegen期间将DTMManagerDefault强制转换到DTMManager中的ClassCastException
在尝试运行使用jaxb2插件执行JAXB代码生成的maven构建时,我遇到了一个奇怪的问题(请参见下面的stacktrace)。我能想到的最好的情况是,DTMManager的一些实现是从不同于xalan-2.7.1中的JAR类加载的;但是,我已经验证了用于运行jaxb:generate目标的类路径只有一个xalan-2.7.1.jar,其中包含一个DTMManager或dtmmanagerdfault,因此我不知道还有什么其他阻碍 最后一个数据点:我们的构建指定了一个“快照”配置文件,它实际上只用于JAR-up源代码(使用maven源代码插件)并将其作为工件发布。我上面描述的失败场景只有在除了默认配置文件之外还指定了此配置文件时才会发生 我使用的是在Linux x64(Fedora 13)上运行于Sun 64位JDK1.6.0_21上的Maven 2.2.1—请参阅下面的stacktrace以获取“mvn-v”信息 关于问题可能是什么和/或如何进行调试有什么想法吗?在过去的几天里,这一直让我感到悲伤,现在阻碍了进展:(Java maven jaxb codegen期间将DTMManagerDefault强制转换到DTMManager中的ClassCastException,java,maven-2,classcastexception,jaxb2,Java,Maven 2,Classcastexception,Jaxb2,在尝试运行使用jaxb2插件执行JAXB代码生成的maven构建时,我遇到了一个奇怪的问题(请参见下面的stacktrace)。我能想到的最好的情况是,DTMManager的一些实现是从不同于xalan-2.7.1中的JAR类加载的;但是,我已经验证了用于运行jaxb:generate目标的类路径只有一个xalan-2.7.1.jar,其中包含一个DTMManager或dtmmanagerdfault,因此我不知道还有什么其他阻碍 最后一个数据点:我们的构建指定了一个“快照”配置文件,它实际上只
解决方案是在类路径中搜索Xalan和xercesImpl上的所有依赖项。应该排除这些依赖项 已更新 我找到了这样一个答案——看
要排除Maven中的
xalan
和xercesImpl
依赖项,请执行以下操作:
<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>
杰克森
.您好,您能解释一下我该怎么做吗?我在Debian+Jboss上也有同样的问题,无法在Linux上解决,但在Windows/Mac上可以正常工作。谢谢。运行{mvn dependency:tree>dependencies.txt}然后将排除添加到您的依赖项中,以排除应该排除的JAR。
# 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"
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
<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>