gpt4 book ai didi

java - wsimport - 两个声明导致冲突,给定同一行

转载 作者:太空狗 更新时间:2023-10-29 22:53:19 26 4
gpt4 key购买 nike

尝试使用 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 的帮助,我最终能够通过省略 -p com.generated 来解决这个问题wsimport 的包规范。所以这就是我最终能够解决这个问题的方法:

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

原因是wsimport试图在同一个包中生成具有相同名称和/或方法的类,这显然不能做到。

因此,通过省略强制包声明,wsimport能够将这些类放在它想要的任何包中,结果是每个 <xsd:schema> 有 3 个不同的包。 WSDL 中的定义。

再次感谢@Petru!

关于java - wsimport - 两个声明导致冲突,给定同一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11883790/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com