由于名称冲突,sbt WSDL 无法编译 SOAP 客户端。我应该怎么办?
sbt WSDL is unable to compile SOAP client due to name conflict. What should I do?
让我先解释一下。我们正在尝试使用 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文件,确实发现同一个schema中有ETicket
和Eticket
,还有ArrayOfETicket
和ArrayOfEticket
。这应该足以让编译器尖叫。
我的问题是,有什么解决方法吗?还是我应该请我们的服务提供商解决命名问题?谢谢!
我通过在build.sbt下面添加sbt-wsdl编译选项解决了这个问题,然后再次编译服务。
WsdlKeys.wsdlToCodeArgs += "-autoNameResolution"
让我先解释一下。我们正在尝试使用 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文件,确实发现同一个schema中有ETicket
和Eticket
,还有ArrayOfETicket
和ArrayOfEticket
。这应该足以让编译器尖叫。
我的问题是,有什么解决方法吗?还是我应该请我们的服务提供商解决命名问题?谢谢!
我通过在build.sbt下面添加sbt-wsdl编译选项解决了这个问题,然后再次编译服务。
WsdlKeys.wsdlToCodeArgs += "-autoNameResolution"