ClassCastException异常的期间行家JAXB代码生成铸造DTMManagerDefault到DTMManager
-
26-09-2019 - |
题
试图运行使用JAXB2插件做JAXB代码生成一个Maven构建时,我有一个奇怪的问题(参见下面的堆栈跟踪)。最好的,我可以计算的是,有DTMManager的一些实现,是从不同的JAR比在xalan的-2.7.1装是类;不过,我已经验证了一个用于运行JAXB类路径:生成的目标只有一个xalan的-2.7.1.jar包含DTMManager或DTMManagerDefault - 所以我不知道还有什么可能的方式越来越
最后一个数据点:我们的构建指定“快照”轮廓,这确实仅用于也JAR了源(使用maven - 源插件)和它们发布为伪像。我上述中所描述的故障情形仅当在除了默认指定了该简档进行。
我使用Maven 2.2.1在Linux的x64(Fedora 13的)Sun的64位JDK 1.6.0_21运行 - 看到堆栈跟踪为 'MVN -v' 信息如下
任何什么问题可能是和/或如何去调试它的想法?这已经引起了我的悲伤,过去几天,它现在阻碍进展:(
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"
解决方案
的解决方案是寻找在类路径上Xalan和xercesImpl所有依赖性。这些依赖关系应排除在外。
<强>更新强>
我发现这样一个答案 - 见 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
其他提示
要排除在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>
不隶属于 StackOverflow