Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
org.apache.axis.wsdl.toJava.DuplicateFileException:重复文件名:_Java_Web Services_Wsdl_Wsdl2java - Fatal编程技术网

org.apache.axis.wsdl.toJava.DuplicateFileException:重复文件名:

org.apache.axis.wsdl.toJava.DuplicateFileException:重复文件名:,java,web-services,wsdl,wsdl2java,Java,Web Services,Wsdl,Wsdl2java,我试图使用Axis1.4从WSDL文件创建客户机项目(我没有其他选择,甚至不能使用Axis2),并得到以下错误。有谁能建议我如何解决这个问题吗?WSDL文件由供应商提供 org.apache.axis.wsdl.toJava.DuplicateFileException: Duplicate file name: C:\Documents and Settings\My Documents\CalculateTax\com\NewProj\CompanyCodeType.java. Hint

我试图使用Axis1.4从WSDL文件创建客户机项目(我没有其他选择,甚至不能使用Axis2),并得到以下错误。有谁能建议我如何解决这个问题吗?WSDL文件由供应商提供

org.apache.axis.wsdl.toJava.DuplicateFileException: Duplicate file name: C:\Documents and Settings\My Documents\CalculateTax\com\NewProj\CompanyCodeType.java.  
Hint: you may have mapped two namespaces with elements of the same name to the same package name.
    at org.apache.axis.wsdl.toJava.JavaWriter.generate(JavaWriter.java:110)
    at org.apache.axis.wsdl.toJava.JavaBeanWriter.generate(JavaBeanWriter.java:1405)
    at org.apache.axis.wsdl.toJava.JavaTypeWriter.generate(JavaTypeWriter.java:113)
    at org.apache.axis.wsdl.toJava.JavaGeneratorFactory$Writers.generate(JavaGeneratorFactory.java:421)
    at org.apache.axis.wsdl.gen.Parser.generateTypes(Parser.java:547)
    at org.apache.axis.wsdl.gen.Parser.generate(Parser.java:432)
    at org.apache.axis.wsdl.gen.Parser.access$000(Parser.java:45)
    at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:362)
    at java.lang.Thread.run(Unknown Source)

您不必使用轴2

例如,如果您有如下wsdl的一部分:

  ...
  <xs:complexType name="Address">
    <xs:sequence>
      <xs:element name="Country" type="xs:string"/>
      <xs:element name="City" type="xs:string"/>
      <xs:element name="Town" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="address">
    <xs:sequence>
      <xs:element name="leftSideOfAt" type="xs:string"/>
      <xs:element name="domain" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="OwnerAddress" type="tns:Address" />
  <xs:element name="EmailAddress" type="tns:address" />
  <xs:element name="CompanyEmailAddress" type="tns:address" />
  ...
。。。
...
这是一个合法的WSDL定义,但Axis失败。 您可以通过重命名complexTypes来解决此问题。对于上述示例:

  ...
  <xs:complexType name="Address">
    <xs:sequence>
      <xs:element name="Country" type="xs:string"/>
      <xs:element name="City" type="xs:string"/>
      <xs:element name="Town" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="Email">
    <xs:sequence>
      <xs:element name="leftSideOfAt" type="xs:string"/>
      <xs:element name="domain" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="OwnerAddress" type="tns:Address" />
  <xs:element name="EmailAddress" type="tns:Email" />
  <xs:element name="CompanyEmailAddress" type="tns:Email" />
  ...
。。。
...

关键是当您将complexType的名称写为“PascalCase”时,它与另一个名称冲突

轴1.4错误描述为()

因此,您可以通过省略可选参数来解决此问题

-p, --package <argument>
    override all namespace to package mappings, use this package
     name instead
-p,--package
重写所有命名空间到包的映射,请使用此包
改名

。。。并且它将生成您的WSDL类而不会出错。如果需要,您可以稍后重构它们。

当您尝试使用具有相同元素名称的wsdl生成java客户机时,就会出现问题。请更改元素名称并重试。否则,您可以使用eclipse工具生成java客户端。它将自动检测相同的元素名称,并为相同的元素创建单独的包。 使用Eclipse生成java客户端:右键单击wsdl文件>Web服务>生成客户端。
这应该会对您有所帮助。

您可能正在经历。感谢您的回复!我有什么办法可以修吗?我的意思是修改WSDL代码?是否可以使用Axis2代码修复Axis1.4错误(我以为他们在Axis2中修复了这个错误)。请给我一些意见。我被困在这里,没有其他选择。我应该使用Axis1.4生成客户端代码。感谢您的友好合作。您应该检查WSDL,看看是否可以将问题精确定位到特定的行。将Axis 2代码注入旧版本很可能行不通。您可能想尝试使用最新的1.x版本来生成代码,它应该足够兼容。它包含了34个模式文件,很难找出哪段代码产生了错误。我正在使用SoapUI来解决这个问题,但找不到正确的位置。如果你有任何线索来关注特定的文件,请让我知道。谢谢你@NabRaj_Baitadi-你能解决这个问题吗?
-p, --package <argument>
    override all namespace to package mappings, use this package
     name instead