我在我的项目中使用了几种不同的模式。它们各自编译成单独的jar,各自使用单独的包,使用xmlbeans ant 任务。我似乎只能成功解析类路径中第一个架构 jar 的 xml(使用 .Factory.parse(String xml)
方法),否则我会得到一个 ClassCastException
如该错误中所述。如果我更改 jar 顺序,则不同的架构将能够成功解析,并且将为不同的类抛出 ClassCastException
。
我做了一些调试,得出的结论是 schemaorg_apache_xmlbeans.namespace
包的结构可能是造成这种情况的原因。由于我的架构没有命名空间,因此我构建的每个 jar 都共享一些在相同包中具有相同名称的文件。具体来说,我发现每个 jar 都有一个 schemaorg_apache_xmlbeans.namespace._nons.xmlns.xsb
文件,该文件似乎指向该 jar 的实际架构。如果工厂使用此文件来确定将用于解析它所拥有的 xml 的某些类,这可能会解释 ClassCastException
,因为它只查看类路径上的第一个文件,而不是正确的文件其中之一是它所具有的 XML。
是否有任何选项可以指定 wsdls 或 xsd 中或 ant 任务“wsdl to java”编译中生成的模式的 namespace (例如 java namespace )?
最佳答案
我认为问题在于 XMLBeans 使用某种内部模式缓存将它们混合在一起。
您是否尝试过为架构 (xsd) 提供不同的命名空间?
关于java - 从错误的 jar 加载类并获取类转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21275115/