当前位置: 首页 > 面试题库 >

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

锺离刚洁
2023-03-14
问题内容

尝试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>是WSDL中的每个定义有3个不同的包。

再次感谢@Petru!



 类似资料:
  • 问题内容: 运行以下 xjc 命令会引发错误: 尽管我了解JAXB绑定以及XJC中的冲突是什么,但我不了解当前模式中的冲突在哪里。 我该如何解决? 谢谢, 皮埃尔 更新:这是错误的上下文: 问题答案: 我将引用网上JAXB上最官方的非官方指南。 当架构包含外观相似的元素/类型名称时,它们可能导致“两个声明在ObjectFactory类中引起冲突”错误。更准确地说,对于所有类型和许多元素中的每一个(

  • 我使用的是MGSplitViewClass(链接),我很难正确设置UICollectionView的大小。在上述拆分视图中,我在主视图中有一组四个UIView,其中包含更健壮的视图(表视图、标签组和集合视图)。 首先,我尝试在nib中添加UICollectionView,并通过编程创建了一个集合视图控制器,并将其连接到nib的集合视图。我一试collectionViewController,这就失

  • 我有一个简单的枚举类,我想在其中有一个名为name的字段。 不幸的是,这在静态编程语言中似乎不起作用。编译失败,消息: 错误:(9,5)静态编程语言:冲突声明:枚举条目名称,公共最终val名称:字符串 同样的Enum类作为Java代码工作正常。如何用静态编程语言解决这个问题?

  • 我遇到了一个罕见的,但令人沮丧的问题,Postgres似乎错过了我的主键冲突,并抛出一个错误的唯一索引,我没有把我的ON冲突。 例如: 表: 列: 有时这运行得很好,但有时它告诉我 我肯定我错过了什么,但我不知道是什么。我需要从集合中删除唯一列吗?为什么这不总是抛出一个错误?

  • 问题内容: package scanner; 为什么会收到一条错误消息,提示“ import java.util.Scanner”与同一文件中定义的文件冲突? 问题答案: 您自己的类名为,并且您正在导入另一个名为的类。这意味着在创建type变量时,编译器不知道您指的是哪个类。 尝试将您的班级重命名为其他名称。 另外,您可以使用这种方式而不重命名自己的类:

  • 问题内容: 我已经将一个现有的Java应用程序导入到我的工作区中。我看到,在应用程序中的不同包中存在具有相同名称的类。 例如,存在一个名为“ Status.java”的类,其中包含 当我尝试在一个类中同时使用它们时,例如如下所示 它开始在Eclipse中指出一个错误 该 进口com.bayer.frontlayer.dao.Status 碰撞与其他import语句 有没有解决这个问题而无需更改类的