Java 从错误的jar加载类并获取类强制转换异常
我在项目中使用了几种不同的模式。它们都被编译到一个单独的jar中,每个jar使用一个单独的包,使用xmlbeans ant任务。对于类路径中的第一个模式jar,我似乎只能成功地解析xml(使用.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\
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)
请参见请帮助我解决此问题。我有急事。提前感谢!!!!请就此提出建议