java - 从错误的 jar 加载类并获取类转换异常

标签 java web-services apache-axis wsdl2java xmlbeans

我在我的项目中使用了几种不同的模式。它们各自编译成单独的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/

相关文章:

java - 按顺序显示链接列表,并在当前位置添加星号

java - JAXB:解码期间拦截?

java - 在Java中以允许它们改变的方式存储字母?

apache-axis - 了解 Rampart 引擎的工作原理

java - axis2 over https 入门问题

java : TreeSet Collection and Comparable interface

c - 开源 C 嵌入式 Web 服务器,支持基于 SOAP/JSON-RPC 的 Web 服务并与 ARM 处理器兼容

javascript - caches.match 和 cache.match 之间的区别

Java连接池(JNDI)半天后不起作用

java - (Axis + Jetty) Prefix 自动生成的前缀命名空间