让我解释一下事情开头。我们正在尝试通过此URL使用SOAP API服务:
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
。这应该足以使编译器尖叫。
我的问题是,有解决方法吗?还是我应该要求我们的服务提供商解决命名问题?谢谢!
我通过在下面添加sbt-wsdl编译选项为build.sbt解决了这个问题,然后再次编译服务。
WsdlKeys.wsdlToCodeArgs += "-autoNameResolution"