本文旨在帮助开发者解决在使用 Maven CXF 插件从 WSDL 文件生成 Java 代码时遇到的 javax/xml/bind/annotation/adapters/HexBinaryAdapter 缺失错误。文章将提供一个可行的 Maven 配置示例,并详细解释如何正确引入必要的 JAXB 依赖,以确保代码生成过程顺利进行。
在使用 Maven 的 CXF 插件 (cxf-code
gen-plugin) 从 WSDL 文件生成 Java 代码时,你可能会遇到与 JAXB (Java Architecture for XML Binding) 相关的错误,特别是在使用 Java 11 及更高版本时。 这是因为 Java 11 移除了 javax.xml.bind 模块,需要显式引入 JAXB 的替代实现。以下提供一种可行的解决方案,通过调整 Maven 配置和引入正确的依赖项来解决这个问题。
以下是一个完整的 pom.xml 文件示例,展示了如何配置 jaxb2-maven-plugin 插件来从 WSDL 文件生成 Java 代码,并包含了必要的 JAXB 依赖项。
4.0.0 org.springframework.boot spring-boot-starter-parent3.0.6 com.example.project awi0.0.1-SNAPSHOT war awi awi 17 org.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-starterorg.springframework.boot spring-boot-devtoolsruntime org.springframework.boot spring-boot-starter-testtest org.junit.vintage junit-vintage-engineorg.springframework.boot spring-boot-starter-tomcatprovided org.projectlombok lomboktrue org.springdoc springdoc-openapi-starter-webmvc-ui2.1.0 org.apache.commons commons-lang3org.springframework.boot spring-boot-starter-tomcatprovided org.springframework.boot spring-boot-starter-testtest org.apache.httpcomponents.client5 httpclient55.2.1 jakarta.xml.ws jakarta.xml.ws-api3.0.0 com.sun.xml.ws jaxws-rt3.0.0 jakarta.xml.bind jakarta.xml.bind-api3.0.0 org.glassfish.jaxb jaxb-runtime4.0.2 exampleName org.springframework.boot spring-boot-maven-pluginorg.codehaus.mojo jaxb2-maven-plugin3.1.0 xjc xjc wsdl ${project.basedir}/src/main/resources/wsdl ${project.basedir}/src/main/java false com.example.soap.objects true
关键点说明:
通过以上步骤,你应该能够成功解决 Maven CXF WSDL2Java 生成代码时遇到的 JAXB 相关错误,并顺利生成所需的 Java 代码。 记住,仔细检查你的 Maven 配置和依赖项,确保它们与你的项目环境兼容。