Я использую несколько разных схем в своем проекте. Каждый из них скомпилирован в отдельный jar-файл, каждый из которых использует отдельный пакет с помощью ant-задачи xmlbeans. Я могу только успешно разобрать xml (используя метод .Factory.parse(String xml)
) для jar схемы, который находится первым в пути к классам, иначе я получаю ClassCastException
, как описано в этой ошибке. Если я изменю порядок банок, другая схема сможет успешно проанализировать, и ClassCastException
будет выбрано для другого класса.
Я провел некоторую отладку и пришел к выводу, что, вероятно, виновата структура пакета schemaorg_apache_xmlbeans.namespace
. Поскольку в моих схемах нет пространств имен, каждый из созданных мной jar-файлов совместно использует несколько файлов с одинаковыми именами в одинаковых пакетах. В частности, я видел, что у каждой банки есть файл schemaorg_apache_xmlbeans.namespace._nons.xmlns.xsb
, который, кажется, указывает на фактическую схему для этой банки. Если фабрика использует этот файл для определения некоторых классов, которые она будет использовать для анализа имеющегося у нее xml, это может объяснить ClassCastException
, поскольку она просматривает только первый файл в пути к классам, а не правильный файл для имеющегося у нее XML. Есть ли возможность указать пространства имен для сгенерированных схем (например, пространства имен java) в wsdls или xsds или в задаче ant «wsdl to java»?