1. 程式人生 > 實用技巧 >異常處理:java.lang.ClassNotFoundException: javax.xml.bind.JAXBContext

異常處理:java.lang.ClassNotFoundException: javax.xml.bind.JAXBContext

異常來源:

筆者在使用Java11開發 springcloud專案時,通過模組依賴執行eureka-server strater類,出現異常
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBContext at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na] at java.base/java.lang.Class.forName0(Native Method) ~[na:na] at java.base/java.lang.Class.forName(Class.java:398) ~[na:na] at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:114) ~[na:na] ... 65 common frames omitted


異常原因:

經驗證,發現從Java9開始,Java SE 的整體jar 結構都進行高度模組化,因此不會自動載入javax.xml.bind內容。

解決辦法:

在 pom檔案中引入依賴
<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-impl</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>2.3.1</version> </dependency>