Eclipse中用Apache CXF执行wsdl2java缺失javax.xml.bind类如何解决
解决方案
方案1:给插件显式添加JAXB依赖(最推荐,兼容性最强)
直接在cxf-codegen-plugin的配置内增加JAXB相关依赖,完全不需要调整JVM参数,同时适配命令行Maven、Eclipse M2E所有运行场景,不会受环境配置差异影响:
<build> <plugins> <plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-plugin</artifactId> <version>${cxf.version}</version> <executions> <execution> <id>generate-sources</id> <phase>generate-sources</phase> <configuration> <!-- 原有配置保持不变 --> ... </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> <!-- 新增以下依赖配置 --> <dependencies> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-core</artifactId> <version>2.3.0.1</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> </dependencies> </plugin> ... </plugins> </build>
方案2:修复JVM参数配置生效问题
之前配置不生效的原因是cxf-codegen-plugin:3.2.0的fork模式存在参数解析bug,可按以下步骤调整:
- 首先将
cxf-codegen-plugin的小版本升级到3.2.1及以上,修复参数解析问题 - 保留原有
<fork>true</fork>和<additionalJvmArgs>--add-modules java.xml.bind</additionalJvmArgs>配置 - 如需适配M2E场景,在Eclipse的「Window - Preferences - Java - Installed JREs」中,选中你用来运行Maven的JDK 11,点击「Edit」,在「Default VM arguments」中添加
--add-modules java.xml.bind,保存后重启Eclipse生效
方案验证
配置完成后,无论在命令行执行mvn clean generate-sources,还是在Eclipse中更新Maven项目重新构建,都不会再报缺失HexBinaryAdapter类的错误。
内容的提问来源于stack exchange,提问作者mmo
相关产品推荐
相关产品推荐

