JDK9.0連接Hibernate5.0異常java.lang.ClassNotFoundException: javax.xml.bind.JAXBException解決辦法

 在學習Hibernate例子的時候遇到了以下問題

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
	at org.hibernate.boot.spi.XmlMappingBinderAccess.<init>(XmlMappingBinderAccess.java:43)
	at org.hibernate.boot.MetadataSources.<init>(MetadataSources.java:86)
	at org.hibernate.cfg.Configuration.<init>(Configuration.java:123)
	at org.hibernate.cfg.Configuration.<init>(Configuration.java:118)
	at com.itheima.dao.HibernateDemo1.main(HibernateDemo1.java:44)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
	... 5 more

經查明原因發現需要JAXB API,

原因是JDK9.0版本以前的版本java SE內默認包含JAXB這個包,但是JDK9.0中 Java SE內便不再包含這個包了,JAXB被劃分爲Java EE內的支持包了,因此導致這個異常。

方法一:

將JDK版本更換成8.0或7.0的

方法二:

若不想更換引入JAXB的jar包

javax.activation-1.2.0.jar 
http://search.maven.org/remotecontent?filepath=com/sun/activation/javax.activation/1.2.0/javax.activation-1.2.0.jar

jaxb-api-2.3.0.jar 
http://search.maven.org/remotecontent?filepath=javax/xml/bind/jaxb-api/2.3.0/jaxb-api-2.3.0.jar

jaxb-core-2.3.0.jar 
http://search.maven.org/remotecontent?filepath=com/sun/xml/bind/jaxb-core/2.3.0/jaxb-core-2.3.0.jar

jaxb-impl-2.3.0.jar 
http://search.maven.org/remotecontent?filepath=com/sun/xml/bind/jaxb-impl/2.3.0/jaxb-impl-2.3.0.jar

下載上面這些文件和複製他們到libs文件夾下, 
添加他們導入到Build Path中 
重新運行即可

以上兩個方法都是我親自測試可以用的,

並且有一點需要注意如果時連接的MySql8.0版本的需要注意連接數據庫的URL的時區問題,不然也很有可能像我一樣折騰大半天的

<!--連接數據庫的URL代碼-->
<property name="hibernate.connection.url" >jdbc:mysql:///test?serverTimezone=GMT%2B8</property>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章