Два класса имеют одинаковое имя типа xml - PullRequest
8 голосов
/ 14 февраля 2011

Когда я пытаюсь опубликовать свою рабочую область в RAD, я получаю эту ошибку «Два класса имеют одно и то же имя типа xml», возможно потому, что в одном пакете существует одно и то же имя класса, но в двух разных jar-файлах.И кажется, что аннотация @XmlType должна иметь различные значения для своих атрибутов name и namespace в источниках этих классов.Я попробовал wsdl2java, доступный в Apache CXF, но не смог заставить его сгенерировать этот атрибут пространства имен.Я попытался поиграться с параметром пакета -p, но это только для размещения сгенерированных источников в указанном пакете.

Есть идеи, как создать этот атрибут пространства имен для каждого элемента, встречающегося в wsdl?ТИА.

Ответы [ 2 ]

10 голосов
/ 03 июня 2011

благодаря ответу Даниэля:

CXF JAXB JAXBEncoderDecoder ошибка демаршаллинга: неожиданный элемент при наличии квалифицированных элементов

я узнал, что есть параметр-xjc-npa для wsdl2java, который мне помог.Это добавит аннотации XmlType.name и XmlType.namespace к сгенерированным классам, поэтому не будет проблем, если у вас одинаковые имена классов, но в разных пространствах имен

1 голос
/ 21 марта 2011

Я столкнулся с этим для объекта с именем «SubmitDataResponse», который я использовал в качестве объекта возврата из метода веб-службы с именем «submitData». Когда я попытался переименовать объект, ошибка исчезла. Мне кажется, что CXF создает свой собственный возвращаемый объект на основе имени метода (в данном случае submitData () -> «SubmitDataResponse»). Вы можете попробовать переименовать класс и посмотреть, есть ли у вас такая же проблема. Возможно, кто-то может присоединиться, чтобы наш класс был назван так, как мы хотим (возможно, с некоторой аннотацией).

Надеюсь, это поможет.

...