JDK11迁移至JDK17:SOAP类XMLGregorianCalendar的Jakarta替代方案咨询
JDK11迁移到JDK17:XMLGregorianCalendar的依赖与导入问题解决方案
首先明确:XMLGregorianCalendar并未迁移到Jakarta命名空间,它属于Java SE自带的
java.xml模块,JDK17中依然保留原包路径javax.xml.datatype.XMLGregorianCalendar,所以你可以直接保留原导入语句,无需修改。你需要确保项目引入了正确的Jakarta JAXB依赖(因为原JAXB的javax包已迁移为jakarta),以Maven为例,添加以下依赖:
<!-- Jakarta JAXB API --> <dependency> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> <version>4.0.0</version> </dependency> <!-- JAXB运行时实现 --> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>4.0.2</version> <scope>runtime</scope> </dependency>
- 若你的项目使用Java模块化(含
module-info.java),需在模块声明中添加依赖:
module your.module.name { // 依赖Java SE的xml模块以使用XMLGregorianCalendar requires java.xml; // 依赖Jakarta JAXB模块 requires jakarta.xml.bind; }
总结:你的修改后代码中最后一行导入import javax.xml.datatype.XMLGregorianCalendar;是完全正确的,无需替换,只需确保上述Jakarta JAXB依赖配置到位即可。
内容的提问来源于stack exchange,提问作者Jose Guerra
相关产品推荐
相关产品推荐

