gpt4 book ai didi

java - cxf-codegen-plugin 和 "Two declarations cause a collision in the ObjectFactory class."

转载 作者:行者123 更新时间:2023-12-05 07:53:09 25 4
gpt4 key购买 nike

我们正在尝试从中生成 Java SOAP 客户端以与外部服务集成。由于这是一家外部公司,因此无法更改 WSDL。

尝试使用 cxf-codegen-plugin Maven 插件生成客户端时,出现以下错误:

Two declarations cause a collision in the ObjectFactory class.

问题与 WSDL 中的以下声明有关:

<s:element name="CallSomeMethod">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="GetSomeDataResult" type="tns:InterfaceReturnCode" />
<s:element minOccurs="0" maxOccurs="1" name="getSomeDataResult" type="tns:GetSomeDataResult" />
</s:sequence>
</s:complexType>
</s:element>

问题出在哪里一目了然。我的问题是,WSDL 似乎可以通过在线通用 SOAP 客户端正常导入,因此它至少必须是有效的。我还读到在没有 -p 选项的情况下生成 Java 代码将导致生成器创建单独的包,这应该可以解决问题。但是,我如何使用 cxf-codegen-plugin Maven 插件来做到这一点?

最佳答案

不确定您是否找到了解决方案,但可能会对其他人有所帮助。我尝试了以下方法,它对我有用。我使用 cxf-codegen-plugin Maven 插件并得到了上述错误。所以首先我在我的 pom.xml 中使用了 -autoNameResolution。这解决了一些重复问题,但仍然很少。因此,在我的 pom.xml 中,我使用“-p”参数将冲突的命名空间放在单独的目录中,并且它起作用了。

示例(来 self 的 pom.xml 的片段):

<wsdlOption>

<wsdl>${basedir}/src/main/resources/wsdl/<wsdl_file>.wsdl</wsdl>

<wsdlLocation>http://host.does.not.exist/src/main/resources/wsdl/<wsdl_file>.wsdl</wsdlLocation>
<extraargs>
<extaarg>-client</extaarg>
<extaarg>-verbose</extaarg>
<extraarg>-autoNameResolution</extraarg>

<extraarg>-p</extraarg>
<extraarg><conflicting_namespace>=<package_where_the_namepsace_should_get_created></extraarg>
<extraarg>-p</extraarg>
<extraarg><conflicting_namespace>=<package_where_the_namepsace_should_get_created></extraarg>
</extraargs>
<packagenames>
<packagename><path_to_package></packagename>
</packagenames>
</wsdlOption>

关于java - cxf-codegen-plugin 和 "Two declarations cause a collision in the ObjectFactory class.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33018941/

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