这通常是由于WSDL文件中包含一些不符合规范的XML或SOAP元素,而这些元素可以被SOAP框架(如CXF或Axis)处理,生成有效的Java源代码。
一种解决方法是使用SOAP框架的wsdl2java工具,而不是使用Java 17中的SOAP工具。例如,对于使用CXF的Spring Boot应用程序,可以在pom.xml文件中添加以下依赖项:
org.apache.cxf
cxf-spring-boot-starter-jaxws
${cxf.version}
然后,在命令行或使用maven构建工具时,运行以下命令:
$ wsdl2java -d src/main/java -p com.example.client http://example.com/service.wsdl
这将生成适当的Java源代码,该代码可以在Spring Boot应用程序中使用。同时,您可以忽略前面编译WSDL文件时的错误和警告。
另一种解决方法是手动编辑WSDL文件,以消除错误和警告。这需要对XML和SOAP的基础知识,并需要一些时间和精力。但是,如果您不想使用SOAP框架或根本不想修改WSDL文件,则可以使用此方法。
例如,如果您的WSDL文件包含以下错误:
这将导致以下编译错误:
[ERROR] The element type "Foo" must be terminated by the matching end-tag "".
要解决此错误,您需要将“Foo”元素包装在一个SOAP操作中,并添加相应的SOAP操作注释。例如:
这将消除编译错误并使生成的Java源代码正确。