让我先解释一下。我们正在尝试使用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文件,确实发现在同一模式中有ETicket
和Eticket
,以及ArrayOfETicket
和ArrayOfEticket
。这应该足以让编译器尖叫。
我的问题是,有任何解决方法吗?或者我应该要求我们的服务提供商修复命名问题?谢谢!
我通过在build.sbt中添加下面的sbt-wsdl编译选项解决了这个问题,然后再次编译服务。
WsdlKeys.wsdlToCodeArgs += "-autoNameResolution"