【问题标题】:Loading the class from wrong jar and getting class cast exception从错误的 jar 加载类并获取类转换异常
【发布时间】:2014-01-22 05:44:08
【问题描述】:

我在我的项目中使用了几种不同的模式。它们每个都被编译成一个单独的 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 或 xsds 或 ant 任务“wsdl to java”编译中生成的模式(如 java 命名空间)指定命名空间?

【问题讨论】:

  • 请帮我解决这个问题。我急需。提前谢谢!!!!
  • 请就此提出建议

标签: java web-services axis2 wsdl2java xmlbeans


【解决方案1】:

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

您是否尝试过为您的架构 (xsds) 提供不同的命名空间?

【讨论】:

    【解决方案2】:

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

    xmloptions.setDocumentType

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      • 2020-02-12
      • 1970-01-01
      • 1970-01-01
      • 2014-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多