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 依賴項後仍然遇到這個異常,請告訴我。