迁移至Spring Boot 3时遭遇JAXB构建失败问题求助
问题解决:maven-jaxb2-plugin 构建时缺失
com/sun/xml/bind/api/ErrorListener 错误原因
你遇到的类缺失问题本质是JAXB版本迁移后的依赖不匹配:
- Jakarta XML Binding 4.x(你使用的
jakarta.xml.bind-api 4.0.2)已将原com.sun.xml.bind命名空间的类迁移至org.glassfish.jaxb下,ErrorListener现在属于jakarta.xml.bind.api包。 - 你的插件配置缺少生成代码必需的
jaxb-xjc依赖,该组件包含WSDL转Java代码的核心工具xjc,缺失会导致类加载失败。
修复方案
修改插件的<dependencies>部分,补充jaxb-xjc依赖,并确保所有JAXB相关依赖版本对齐:
<build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId> <version>0.15.3</version> <executions> <execution> <goals> <goal>generate</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> <version>4.0.2</version> </dependency> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>4.0.5</version> </dependency> <!-- 补充生成代码必需的xjc工具依赖 --> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-xjc</artifactId> <version>4.0.5</version> </dependency> </dependencies> <configuration> <schemaLanguage>WSDL</schemaLanguage> <generateDirectory>${basedir}/target/generated-sources</generateDirectory> <generatePackage>wsdl</generatePackage> <schemaDirectory>${basedir}/src/main/resources/wsdl</schemaDirectory> <schemaIncludes> <include>*.wsdl</include> </schemaIncludes> <bindingDirectory>${basedir}/src/main/resources/binding</bindingDirectory> <bindingIncludes>*.xml</bindingIncludes> </configuration> </plugin> </plugins> </build>
额外验证步骤
- 执行构建前,清理本地仓库冲突依赖:
mvn clean install -U - 确认
src/main/resources/wsdl目录下存在有效WSDL文件,绑定文件(若使用)格式合规。
内容的提问来源于stack exchange,提问作者Mukul Chauhan
相关产品推荐
相关产品推荐

