org.apache.axis.wsdl.toJava.DuplicateFileException:重复文件名:
我试图使用Axis1.4从WSDL文件创建客户机项目(我没有其他选择,甚至不能使用Axis2),并得到以下错误。有谁能建议我如何解决这个问题吗?WSDL文件由供应商提供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
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