Java 11 和如何修复 java.lang。 TypeNotPresentException:类型 javax.xml.bind.JAXBContext 异常?

已发表: 2018-12-15

Java11 和 javax.xml.bind.JAXBContext 异常

您是否面临java.lang.TypeNotPresentException :类型 javax.xml.bind.JAXBContext 不存在异常?

今天在我的 Eclipse 上运行我的 RESTful 服务时,我注意到我的 Eclipse 控制台中出现javax.xml.bind.JAXBContext错误。 自去年以来,同一个程序运行良好,没有任何问题。

我开始思考本地环境发生的变化。 自去年以来没有发生任何代码检查,所以我认为这主要是因为我最新的 Java 11 升级。

正如您在我之前关于 Java 11 的一切中所看到的,其中不再支持 Java EE 模块。 Java 11 删除了对java.xml.bind的支持——它定义了用于 XML 绑定的 Java 架构 (JAXB) API。

她是一个完整的堆栈跟踪:

这就是我开始超越异常的原因。 javax.xml.bind的 Java 11 包不再存在。

  • Java 7 版本:包含和工作
  • Java 8 版本:包含和工作
  • Java 9 版本:已弃用
  • Java 10 版本:已弃用
  • Java 11 版本:已删除

为了解决这个问题,您需要手动将以下 JAXB Maven 依赖项添加到您的项目中。

如果需要,这是我的完整 pom.xml 文件:

尝试清理 Eclipse 项目并再次尝试运行 Tomcat 服务器。 你不应该再看到这个问题了。

愉快的编码,如果你在添加上述 Maven 依赖项后仍然遇到这个异常,请告诉我。