Столкновение в ObjectFactory двух вещей, которые должны быть только одной - PullRequest
2 голосов
/ 13 декабря 2010

Я пытаюсь выполнить wsimport (через netbeans 6.9.1) в WSDL от третьей стороны, но он продолжает генерировать эту ошибку в JAXB:

Two declarations cause a collision in the ObjectFactory class.

Столкновение происходит примерно так:

В messages.xsd:

<xs:element name="PingRequest" nillable="true" type="tns:PingRequest" />

В service.xsd:

<xs:element name="Ping">
  <xs:complexType>
    <xs:sequence>
      <xs:element xmlns:q1="http://www.3rd-party-uri-here/messages/" minOccurs="0" name="request" nillable="true" type="q1:PingRequest" /> <!-- HERE! -->
    </xs:sequence>
  </xs:complexType>
</xs:element>

Я видел здесь в stackoverflow, что JAXB не может обрабатывать случаи, когда два разных элемента имеют одинаковые имена или имена, отличающиеся только заглавными буквами. Однако в этом случае два элемента действительно должны быть одинаковыми (второй относится к первому). Итак, что я могу сделать?

1 Ответ

1 голос
/ 09 августа 2012

У меня была похожая проблема, описанная здесь: wsimport - два объявления вызывают коллизию, один и тот же номер строки указан

Я получаю эту ошибку при выполнении этой команды:

wsimport ./bwWsdl.xml -p com.generated -Xnocompile -d ../src -extension -keep -XadditionalHeaders -B-XautoNameResolution

Благодаря помощи @Petru Gardea я смог в конечном итоге справиться с этим, пропустив спецификацию пакета -p com.generated в wsimport. Итак, вот что мне удалось запустить, чтобы обойти эту проблему:

wsimport ./bwWsdl.xml -Xnocompile -d ../src -extension -keep -XadditionalHeaders -B-XautoNameResolution
...