java - 贾克斯布 : Two declarations in a wsdl cause a collision in the objectFactory class

标签 java affiliate maven-jaxb2-plugin

我想使用 Affilinet API。其中一个 WSDL 文件位于此处:

Affilinet AccountService.wsdl

我使用这个 Maven 插件来生成源代码:

Jaxb Maven Plugin

我的Pom.xml插件配置:

<plugin>
                <groupId>org.jvnet.jaxb2.maven2</groupId>
                <artifactId>maven-jaxb2-plugin</artifactId>
                <version>0.13.1</version>
                <executions>
                    <execution>
                        <id>schema1-generate</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <schemaLanguage>WSDL</schemaLanguage>
                            <generatePackage>webservices.framework.affilinet.logon</generatePackage>
                            <schemas>
                                <schema>
                                    <url>https://api.affili.net/V2.0/Logon.svc?wsdl</url>
                                </schema>
                            </schemas>
                        </configuration>
                    </execution>
                    <execution>
                    <id>schema2-generate</id>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <schemaLanguage>WSDL</schemaLanguage>
                        <generatePackage>webservices.framework.affilinet.inbox</generatePackage>
                        <schemas>
                            <schema>
                                <url>https://api.affili.net/V2.0/PublisherInbox.svc?wsdl</url>
                            </schema>
                        </schemas>
                    </configuration>
                </execution>
                    <execution>
                        <id>schema3-generate</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <schemaLanguage>WSDL</schemaLanguage>
                            <generatePackage>webservices.framework.affilinet.inbox</generatePackage>
                            <schemas>
                                <schema>
                                    <url>https://api.affili.net/V2.0/AccountService.svc?wsdl</url>
                                </schema>
                            </schemas>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

所以,在编译这个时,我收到一个错误:

com.sun.istack.SAXParseException2; systemId: https://api.affili.net/V2.0/AccountService.svc?wsdl; lineNumber: 1; columnNumber: 2127; Two declarations cause a collision in the objectFactory class.

但是我如何使用 url 中的 wsdl 文件修复此问题?

schemaLocation 不接受 wsdl 文件....

编辑:完整日志:

[ERROR] Error while generating code.Location [ https://api.affili.net/V2.0/AccountService.svc?wsdl{1,6200}].

com.sun.istack.SAXParseException2;系统ID:https://api.affili.net/V2.0/AccountService.svc?wsdl ;行号:1;列数:6200;这是另一个声明。

最佳答案

如果您有两个相互冲突的定义,通常会发生这种情况。由于 WSDL 的格式很差,所以很难判断 WSDL 究竟出了什么问题。但通常这就像两个元素在转换为 Java 后获得相同的方法名称。

您通常可以通过绑定(bind)自定义来解决此问题。这是一个例子:

<jaxb:bindings version="1.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
    jaxb:extensionBindingPrefixes="xjc">

    <jaxb:bindings 
        schemaLocation="http://schemas.opengis.net/citygml/texturedsurface/1.0/texturedSurface.xsd" 
        node="/xs:schema">
        <jaxb:bindings node="xs:element[@name='_Appearance']">
            <jaxb:factoryMethod name="AAppearance"/>
        </jaxb:bindings>
    </jaxb:bindings>

</jaxb:bindings>

所以你要做的就是找出到底是什么原因导致了问题,编写并应用绑定(bind)。我要做的第一件事就是下载 WSDL,将其格式化为人类可读的格式并在本地进行编译。这应该可以清楚地指出哪些部分导致了问题。

关于java - 贾克斯布 : Two declarations in a wsdl cause a collision in the objectFactory class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47952373/

相关文章:

java - Java 中的音乐(开始/停止)

java - 安装 Blackboard Auto Signon 构建 block

seo - 谷歌友好的联盟代码

affiliate - 亚马逊联营公司的请求受到限制

java - 从不同项目导入xsd,生成java类

Java共享属性文件: Windows + Unix (generic)

java - Android - 获取从文件资源管理器中选择的.txt文件的真实路径

android - 将 amazon mp3 集成到我的 android 应用程序中

java - 如何使用 gradle 从 WSDL 和 XSD 生成类,相当于 maven-jaxb2-plugin

java - 使用 xjc 从多个 xsd 文件生成 Java