在Eclipse 2024与JDK 22中,如何用JAXB编译XSD生成Java类?
解决Eclipse 2024+JDK22下用Maven JAXB生成Java类的步骤
首先修正你的pom.xml配置(当前存在版本兼容问题,JDK22需适配Jakarta EE版本的JAXB组件):
1. 调整依赖与插件版本
替换原pom中的依赖和插件配置为以下内容:
<dependencies> <!-- Jakarta JAXB API --> <dependency> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> <version>4.0.2</version> </dependency> <!-- 适配Jakarta的JAXB运行时,版本需与API一致 --> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>4.0.4</version> <scope>runtime</scope> </dependency> </dependencies> <build> <plugins> <!-- 使用适配JDK11+的jaxb2-maven-plugin版本 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxb2-maven-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <goals> <goal>xjc</goal> </goals> </execution> </executions> <configuration> <schemaDirectory>${basedir}/src/main/resources</schemaDirectory> <schemaFiles>personas.xsd</schemaFiles> <!-- 采用Maven标准生成源目录,Eclipse会自动识别为源路径 --> <outputDirectory>${project.build.directory}/generated-sources/jaxb</outputDirectory> <packageName>com.prueba.capaNegocio</packageName> <!-- 指定生成类的包结构 --> </configuration> </plugin> </plugins> </build>
说明:
- 原
jaxb-runtime版本2.3.3属于Java EE时代,与Jakarta API 4.0.2不兼容,需替换为Jakarta版本的运行时 - 升级插件到3.1.0版本,适配JDK11+及Jakarta EE规范
- 新增
packageName指定包结构,调整输出目录为Maven标准路径,避免后续手动配置源路径
2. 执行Maven生成命令
在Eclipse中有两种方式触发生成:
- 方式一:通过Run As菜单
右键项目 →Run As→Maven build...,在弹出窗口的Goals输入框填写jaxb2:xjc,点击Run。 - 方式二:通过Maven视图
打开Window→Show View→Other→ 找到Maven→Maven Projects,展开项目后依次点击Plugins→jaxb2→jaxb2:xjc,双击执行。
3. 验证生成结果
执行完成后,生成的Java类会出现在target/generated-sources/jaxb目录下,Eclipse会自动将该目录标记为源路径,可直接在项目中引用这些类。
关于右键XSD无JAXB生成选项的说明
JDK11及以后已移除内置JAXB模块,Eclipse自带的GUI生成工具依赖旧版JDK组件,而你的项目用Maven管理依赖,直接通过Maven插件执行生成是更适配当前环境的可靠方式。
内容的提问来源于stack exchange,提问作者Alberto
相关产品推荐
相关产品推荐

