运行 wsimport 时出现错误 'duplicate "message" entity'
Getting error 'duplicate "message" entity' when running wsimport
例如使用 wsimport 时
wsimport -J-Djavax.xml.accessExternalSchema=all -keep -verbose https://example.com/path/foo.svc?wsdl
我得到的错误是
[ERROR] duplicate "message" entity: "..."
line 1 of https://example.com/Path/foo.svc?wsdl
Exception in thread "main" com.sun.tools.internal.ws.wscompile.AbortException
at com.sun.tools.internal.ws.wsdl.framework.AbstractDocument.define(AbstractDocument.java:129)
at com.sun.tools.internal.ws.wsdl.document.Definitions.add(Definitions.java:81)
at com.sun.tools.internal.ws.wsdl.parser.WSDLParser.parseDefinitionsNoImport(WSDLParser.java:278)
at com.sun.tools.internal.ws.wsdl.parser.WSDLParser.processImports(WSDLParser.java:221)
at com.sun.tools.internal.ws.wsdl.parser.WSDLParser.parseDefinitions(WSDLParser.java:210)
at com.sun.tools.internal.ws.wsdl.parser.WSDLParser.buildWSDLDocument(WSDLParser.java:193)
at com.sun.tools.internal.ws.wsdl.parser.WSDLParser.parse(WSDLParser.java:165)
at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.java:120)
at com.sun.tools.internal.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.java:429)
at com.sun.tools.internal.ws.wscompile.WsimportTool.run(WsimportTool.java:190)
at com.sun.tools.internal.ws.wscompile.WsimportTool.run(WsimportTool.java:168)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.tools.internal.ws.Invoker.invoke(Invoker.java:159)
at com.sun.tools.internal.ws.WsImport.main(WsImport.java:42)
出现此错误的原因有哪些?
我也有类似的问题。我的问题是 url 的字母数字大小写与 xml 文件中的位置 url 不匹配。
您的 https url 应该指向一个 xml 格式的文件。在 xml 文件中,您应该有一个位置属性。
使用 wsimport 时,确保字母数字大小写与 xml 文件中的 url 位置匹配。
例如,
https://example.com/Path/foo.svc?wsdl ---> try https://example.com/path/foo.svc?wsdl
wsimport -keep -verbose https://example.com/path/foo.svc?wsdl
例如使用 wsimport 时
wsimport -J-Djavax.xml.accessExternalSchema=all -keep -verbose https://example.com/path/foo.svc?wsdl
我得到的错误是
[ERROR] duplicate "message" entity: "..."
line 1 of https://example.com/Path/foo.svc?wsdl
Exception in thread "main" com.sun.tools.internal.ws.wscompile.AbortException
at com.sun.tools.internal.ws.wsdl.framework.AbstractDocument.define(AbstractDocument.java:129)
at com.sun.tools.internal.ws.wsdl.document.Definitions.add(Definitions.java:81)
at com.sun.tools.internal.ws.wsdl.parser.WSDLParser.parseDefinitionsNoImport(WSDLParser.java:278)
at com.sun.tools.internal.ws.wsdl.parser.WSDLParser.processImports(WSDLParser.java:221)
at com.sun.tools.internal.ws.wsdl.parser.WSDLParser.parseDefinitions(WSDLParser.java:210)
at com.sun.tools.internal.ws.wsdl.parser.WSDLParser.buildWSDLDocument(WSDLParser.java:193)
at com.sun.tools.internal.ws.wsdl.parser.WSDLParser.parse(WSDLParser.java:165)
at com.sun.tools.internal.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.java:120)
at com.sun.tools.internal.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.java:429)
at com.sun.tools.internal.ws.wscompile.WsimportTool.run(WsimportTool.java:190)
at com.sun.tools.internal.ws.wscompile.WsimportTool.run(WsimportTool.java:168)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.tools.internal.ws.Invoker.invoke(Invoker.java:159)
at com.sun.tools.internal.ws.WsImport.main(WsImport.java:42)
出现此错误的原因有哪些?
我也有类似的问题。我的问题是 url 的字母数字大小写与 xml 文件中的位置 url 不匹配。
您的 https url 应该指向一个 xml 格式的文件。在 xml 文件中,您应该有一个位置属性。
使用 wsimport 时,确保字母数字大小写与 xml 文件中的 url 位置匹配。
例如,
https://example.com/Path/foo.svc?wsdl ---> try https://example.com/path/foo.svc?wsdl
wsimport -keep -verbose https://example.com/path/foo.svc?wsdl