【发布时间】:2017-12-23 12:09:25
【问题描述】:
我想使用 Affilinet API。它的一个 WSDL 文件在这里:
我使用这个 Maven 插件来生成源代码:
我的 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;这是另一个声明。
【问题讨论】:
-
一个选项中是否定义了两个同名元素?我通过重命名其中一个定义的绑定修复了这个问题,因此名称是唯一的。
-
是的,你能告诉我你是怎么做到的吗?我用完整的日志编辑我的问题
-
对不起,我在手机上,无法正确查找。一般的想法是为其中一个元素(由 xpath 定义)添加一个绑定,并为其分配一个将在 Jaxb 模型中使用的不同名称。
标签: java affiliate maven-jaxb2-plugin