java.lang.ClassCastException: com.ctc.wstx.stax.WstxInputFactory cannot be cast to javax.x

bang 大神 能帮忙看个bug么? 项目是osgi项目 equinox+spring+hibernate+tapestry5 现在要用cxf生成客户端代码供调用 测试发现报 Caused by: java.lang.ClassCastException: com.ctc.wstx.stax.WstxInputFactory cannot be cast to javax.xml.stream.XMLInputFactory, 在网上百度和google了很久 有说System.setProerty 或者设置-Djavax.xml.stream.XMLInputFactory= com.ctc.wstx.stax.WstxInputFactory 可以解决 试了不行, 百度上有说是cxf和jdk1.6.4以下冲突 我换成jdk1.6.43还是不行,跟踪代码知道 public static XMLInputFactory newInstance(String factoryId, ClassLoader classLoader) throws FactoryConfigurationError { try { //do not fallback if given classloader can't find the class, throw exception return (XMLInputFactory) FactoryFinder.newInstance(factoryId, classLoader, false); } catch (FactoryFinder.ConfigurationError e) { throw new FactoryConfigurationError(e.getException(), e.getMessage()); } }是这个里面强制转换错误, 打开-Djaxp:debug=true 发现JAXP: created new instance of class com.sun.xml.internal.stream.XMLOutputFactoryImpl using ClassLoader: null JAXP: find factoryId =javax.xml.stream.XMLInputFactory JAXP: found system property, value=com.ctc.wstx.stax.WstxInputFactory JAXP: created new instance of class com.ctc.wstx.stax.WstxInputFactory using ClassLoader: null 后就包错了, 仔细查找jar包发现 项目里面有stax2.jar stax.jar woodstox-asl.jar其中里面com.ctc.wstx.stax.WstxInputFactory通过stax2.jar间接继承到stax.jar里面 javax.xml.XMLInputFactory 所以理论上来说子类向父类转换不会错啊, 但是rt.jar里面也有javax.xml.XMLInputFactory这个类 所以是不是转换的时候拿wstxinputfactory转成 rt.jar里的javax.xml.XMLInputFactory 了所以报错了啊 ,虽然能分析到此,但是没有办法解决, 网上又说可删除 woodstox-asl.jar这个包就好了 但是发现不能删除 在系统中tapestry5中有用到。 问题分析到此 我已经是山穷水尽了,,,,,,,故来求助 请指教。

2013-08-29 16:02 "@hongwei01267 "的内容
Caused by: java.lang.ClassCastException: com.ctc.wstx.stax.WstxInputFactory cannot be cast to javax.xml.stream.XMLInput ...

没碰到过,可以重新下载包含这个类的最新版本包: http://woodstox.codehaus.org/Download,实在不行打开源码,修改WstxInputFactory

回复 banq 谢谢,修改jar包,真太难了 ,我可能做不到,能不能教我一点调试jar的方法 或者什么 调试的技巧啊。