由于名称冲突,WSDL无法编译SOAP客户端。我该怎么办?

问题描述 投票:0回答:1

让我先解释一下。我们正在尝试使用SOAP API服务,通过此URL:

http://onepointdemo.myfarebox.com/V2/OnePoint.svc?singleWsdl

我们尝试用sbt WSDL编译它,没有添加任何选项。它失败了。这是错误的样子

[error] /Users/catfly/our-project/target/scala-2.11/wsdl/main/sources/org/datacontract/schemas/_2004/_07/mystifly/ArrayOfEticket.java:35: ArrayOfEticket is already defined as object ArrayOfEticket
[error] public class ArrayOfEticket {
[error]              ^
[error] /Users/catfly/our-project/target/scala-2.11/wsdl/main/sources/org/datacontract/schemas/_2004/_07/mystifly/Eticket.java:36: Eticket is already defined as object Eticket
[error] public class Eticket {
[error]              ^
[error] two errors found
[error] (compile:compileIncremental) Compilation failed
[error] Total time: 19 s, completed Feb 26, 2018 6:03:43 PM

我们深入研究上面的WSDL文件,确实发现在同一模式中有ETicketEticket,以及ArrayOfETicketArrayOfEticket。这应该足以让编译器尖叫。

我的问题是,有任何解决方法吗?或者我应该要求我们的服务提供商修复命名问题?谢谢!

java soap wsdl sbt
1个回答
0
投票

我通过在build.sbt中添加下面的sbt-wsdl编译选项解决了这个问题,然后再次编译服务。

WsdlKeys.wsdlToCodeArgs += "-autoNameResolution"
© www.soinside.com 2019 - 2024. All rights reserved.