Java 11 และวิธีแก้ไข java.lang TypeNotPresentException: พิมพ์ javax.xml.bind.JAXBContext ข้อยกเว้น?

เผยแพร่แล้ว: 2018-12-15

Java11 และ javax.xml.bind.JAXBContext ข้อยกเว้น

คุณกำลังเผชิญกับ java.lang.TypeNotPresentException : พิมพ์ javax.xml.bind.JAXBContext ไม่มี ข้อยกเว้นหรือไม่

วันนี้ในขณะที่ใช้บริการ RESTful บน Eclipse ฉันสังเกตเห็นข้อผิดพลาด javax.xml.bind.JAXBContext ในคอนโซล eclipse ของฉัน โปรแกรมเดียวกันทำงานได้ดีตั้งแต่ปีที่แล้วโดยไม่มีปัญหาใดๆ

ฉันเริ่มคิดถึงการเปลี่ยนแปลงที่เกิดขึ้นกับสภาพแวดล้อมในท้องถิ่นของฉัน ไม่มีการเช็คอินโค้ดใดๆ เกิดขึ้นตั้งแต่ปีที่แล้ว ดังนั้นฉันคิดว่าสาเหตุหลักมาจากการอัปเกรด Java 11 ล่าสุดของฉัน

ดังที่คุณเห็นในทุกอย่างเกี่ยวกับ Java 11 ก่อนหน้านี้ไม่มีการสนับสนุนโมดูล Java EE ในนั้นอีกต่อไป Java 11 ลบการสนับสนุนสำหรับ java.xml.bind ซึ่งกำหนด Java Architecture for XML Binding (JAXB) API

เธอเป็นร่องรอยสแต็คที่สมบูรณ์:

และนั่นคือเหตุผลที่ฉันเริ่มได้รับข้อยกเว้น แพ็คเกจ Java 11 สำหรับ javax.xml.bind ไม่มีอยู่แล้ว

  • เวอร์ชัน Java 7: รวมและใช้งานได้
  • เวอร์ชัน Java 8: รวมและใช้งานได้
  • เวอร์ชัน Java 9: ​​เลิกใช้แล้ว
  • เวอร์ชัน Java 10: เลิกใช้แล้ว
  • เวอร์ชัน Java 11: ลบออก

ในการแก้ไขปัญหานี้ คุณต้องเพิ่มการพึ่งพา JAXB Maven ด้านล่างด้วยตนเองในโครงการของคุณ

นี่คือไฟล์ pom.xml ที่สมบูรณ์ของฉัน หากจำเป็น:

ลองทำความสะอาดโปรเจ็กต์ Eclipse ของคุณและลองเรียกใช้เซิร์ฟเวอร์ Tomcat อีกครั้ง คุณไม่ควรเห็นปัญหานี้อีกต่อไป

ขอให้สนุกกับการเขียนโค้ดและแจ้งให้เราทราบหากคุณยังคงเผชิญกับข้อยกเว้นนี้หลังจากเพิ่มการพึ่งพา Maven ด้านบน