Java 17项目适配的JAXB Jar文件及兼容Java EE版本咨询
Java 17 适配的JAXB版本及兼容规范说明
Java 9 起,JAXB作为Java EE组件被从JDK中移除,升级到Java 17必须手动引入对应依赖包,以下是适配方案:
适配Java 17的JAXB版本
- 若继续使用Java EE API(命名空间
javax.xml.bind),推荐用2.3.1及以上版本,比如2.3.3,这是Oracle维护的最后一批Java EE风格JAXB实现,完全兼容Java 17。 - 若迁移到Jakarta EE API(Java EE的继任者,命名空间改为
jakarta.xml.bind),推荐3.0.0及以上版本,比如3.1.0,原生适配Java 17,也是当前官方主推的长期维护版本。
兼容的Java EE/Jakarta EE版本
- Java EE 8:对应JAXB 2.3.x版本,完全兼容Java 17,但Java EE 8已停止官方更新,适合暂不想迁移命名空间的项目。
- Jakarta EE 9+:Jakarta EE 9对应JAXB 3.0.x,Jakarta EE 10对应JAXB 4.0.x,两者都原生支持Java 17,是长期迭代的首选,但需要将代码中
javax.xml.bind相关导入替换为jakarta.xml.bind。
示例依赖配置(Maven)
Java EE风格
<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-core</artifactId> <version>2.3.3</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.3.3</version> </dependency>
Jakarta EE风格
<dependency> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>3.1.0</version> <scope>runtime</scope> </dependency>
注意:若使用Gradle,依赖写法类似,需对应替换groupId和版本。另外项目中若有JAXB代码生成插件(如
maven-jaxb2-plugin),需同步升级到2.5.0及以上版本以兼容Java 17。
内容的提问来源于stack exchange,提问作者Anjit Singha
相关产品推荐
相关产品推荐

