Java 从错误的jar加载类并获取类强制转换异常

Java 从错误的jar加载类并获取类强制转换异常,java,web-services,axis2,wsdl2java,xmlbeans,Java,Web Services,Axis2,Wsdl2java,Xmlbeans,我在项目中使用了几种不同的模式。它们都被编译到一个单独的jar中,每个jar使用一个单独的包,使用xmlbeans ant任务。对于类路径中的第一个模式jar,我似乎只能成功地解析xml(使用.Factory.parse(stringxml)方法),否则我会得到一个ClassCastException,如本bug所述。如果我更改jar顺序,不同的模式将能够成功解析,并且将为不同的类抛出ClassCastException 我已经做了一些调试,我得出的结论是,schemaorg\u apache\

我在项目中使用了几种不同的模式。它们都被编译到一个单独的jar中,每个jar使用一个单独的包,使用xmlbeans ant任务。对于类路径中的第一个模式jar,我似乎只能成功地解析xml(使用.
Factory.parse(stringxml)
方法),否则我会得到一个
ClassCastException
,如本bug所述。如果我更改jar顺序,不同的模式将能够成功解析,并且将为不同的类抛出
ClassCastException

我已经做了一些调试,我得出的结论是,
schemaorg\u apache\u xmlbeans.namespace
包的结构可能是原因。因为我的模式没有名称空间,所以我构建的每个JAR都共享一些文件,这些文件在相同的包中具有相同的名称。具体来说,我看到每个jar都有一个
schemaorg\u apache\u xmlbeans.namespace.\u nons.xmlns.xsb
文件,它似乎指向该jar的实际模式。如果工厂使用此文件确定它将用于解析其拥有的xml的某些类,这可能解释了
ClassCastException
,因为它只查看类路径上的第一个文件,而不是它拥有的xml的正确文件。
在wsdl或xsd或ant任务“wsdl-to-java”编译中,是否有任何选项可以为生成的模式(如java名称空间)指定名称空间?

我认为问题在于XMLBeans使用某种内部模式缓存将它们混在一起


您是否尝试过为模式(XSD)提供不同的名称空间?

这可以通过使用parse方法的XMLOptions参数来解决。 例子: XmlOptions opts=新的XmlOptions(); opts.setDocumentType(YourDocument.Factory.newInstance().SchematType()); parse(字符串xml,opts)


请参见

请帮助我解决此问题。我有急事。提前感谢!!!!请就此提出建议