Java wsimport-两个声明导致冲突,给出了同一行

Java wsimport-两个声明导致冲突,给出了同一行,java,xsd,jaxb,wsimport,Java,Xsd,Jaxb,Wsimport,尝试使用wsimport为SOAP端点生成客户端。使用的WSDL和所有XSD文件都是本地副本 这是正在执行的命令: wsimport ./bwWsdl.xml -p com.generated -Xnocompile -d ../src -extension -keep -XadditionalHeaders -B-XautoNameResolution 这就产生了这个错误: [ERROR] Two declarations cause a collision in the ObjectFac

尝试使用
wsimport
为SOAP端点生成客户端。使用的WSDL和所有XSD文件都是本地副本

这是正在执行的命令:

wsimport ./bwWsdl.xml -p com.generated -Xnocompile -d ../src -extension -keep -XadditionalHeaders -B-XautoNameResolution
这就产生了这个错误:

[ERROR] Two declarations cause a collision in the ObjectFactory class.
  line 16 of file:/schemas/newSchema.xsd

[ERROR] (Related to above error) This is the other declaration.   
  line 16 of file:/schemas/newSchema.xsd
注意,报告的碰撞的行号相同

以下是模式:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
  version="2.004" id="OTA2003A2009A">

  <xs:complexType name="TPA_ExtensionsType">
    <xs:annotation>
      <xs:documentation xml:lang="en">Description here.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="TPA_Extensions" type="TPA_ExtensionsType">
    <xs:annotation>
      <xs:documentation xml:lang="en">More description here.</xs:documentation>
    </xs:annotation>
  </xs:element>
</xs:schema>  

这里是描述。
这里有更多的描述。
我已经尝试删除类型定义,但它在许多其他地方被引用

有没有人能提供一些建议,如何让它发挥作用

谢谢

编辑:

以下是WSDL导入这些模式的行:

<definitions name='ResLookupGet' targetNamespace='http://org.jboss.ws/resLookupGet' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:http='http://schemas.xmlsoap.org/wsdl/http/' xmlns:mime='http://schemas.xmlsoap.org/wsdl/mime/' xmlns:ns='http://www.opentravel.org/OTA/2003/05/beta' xmlns:rq='http://www.opentravel.org/OTA/2003/05/betarq' xmlns:rs='http://www.opentravel.org/OTA/2003/05/betars' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://org.jboss.ws/resLookupGet' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
 <types>
  <xsd:schema targetNamespace='http://org.jboss.ws/resLookupGet' xmlns:tns='http://org.jboss.ws/resLookupGet' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
   <xsd:import namespace='http://www.opentravel.org/OTA/2003/05/betarq' schemaLocation='./schemas/FooAffiliateHeaderRQ.xsd'/>
   <xsd:import namespace='http://www.opentravel.org/OTA/2003/05/betarq' schemaLocation='./schemas/FooResLookupGetRQ.xsd'/>
   <xsd:import namespace='http://www.opentravel.org/OTA/2003/05/betars' schemaLocation='./schemas/FooResLookupGetRS.xsd'/>
  </xsd:schema>
 </types>
<message name='ResLookupGetRQ'>
  <part element='rq:FooResLookupGetRQ' name='FooResLookupGetRQ'></part>
 </message>
 <message name='ResLookupGetRS'>
  <part element='rs:FooResLookupGetRS' name='FooResLookupGetRS'></part>
 </message>

多亏@Petru Gardea的帮助,我最终能够通过省略wsimport的
-p com.生成的
包规范来克服这个问题。所以这就是我最终能够跑过去解决这个问题的方法:

wsimport ./bwWsdl.xml -Xnocompile -d ../src -extension -keep -XadditionalHeaders -B-XautoNameResolution
原因是,
wsimport
试图在同一个包中生成具有相同名称和/或方法的类,这显然是无法做到的

因此,通过省略强制的包声明,
wsimport
能够将类放入它想要的任何包中,结果是,每个WSDL中的
定义有3个不同的包


再次感谢@Petru

你有没有可能发布一组文件,这些文件会给出相同的结果?此错误消息通常是由于加载同一定义两次或两次以上导致加载程序与基本URI混淆。我不这么认为——总共有136个模式引用它…我将尝试可视化/跟踪导致问题的XSD文件中的路径。如果这是基于开放旅游联盟。。。我假设您构建了WSDL;您能否指出高层结构,即您是否从WSDL导入OTA XSD,您是否在WSDL中定义XSD内容,或者您是否导入一个外部XSD,然后引用所有其他XSD?WSDL是在其他地方开发的,它导入三个XSD,然后引用其他XSD。。。最后是一个20行的XSD,它只包含上面代码段中的类型。我尝试将类型重命名为各种类型,但始终遇到相同的错误。。。感谢btwUpdated提供的帮助,包括导入模式的WSDL的顶部,这也很有用:
wsimport-wsdlName.xml-J-Djavax.xml.accessExternalDTD=all…
以及
wsimport-wsdlName.xml-J-Djavax.xml.accessExternalSchema=all…
如果你在maven pom中运行wsimport,那么你必须删除标记@Cuga Hi Cuga,谢谢你这篇精彩的帖子!我知道这是一个老帖子,但我也遇到了类似的问题,因为你曾经。我正在使用这个wsdl,但是没有办法生成java存根。您是否有可能在这里发言?听起来您需要指定Jaxb绑定。看看这个问题:还有这个家伙: