java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException和java.lang.IllegalStateException: Failed to load ApplicationContext
在学习SpringDataJPA时,遇到了两个问题,在此记录一下
原博客链接:
第一个:
java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
第二个:
Arjava.lang.IllegalStateException: Failed to load ApplicationContext
刚开始以为是applicationContext.xml的路径写错了,然后我点了点,能进去啊,便继续往后看错误信息:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [applicationContext-jpa.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
拉倒最后才看到,,,
这就和第一个问题一样了,按原博客所说,两种解决方案:
-
换jdk版本,jdk8或7都行
-
在pom.xml中加入以下依赖
<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-core</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency>
即可解决
在原博客评论中看到的报错原因:
产生这个问题的原因主要是使用JDK 9.0 及其以上,JDK9做了巨大改变(推荐使用JDK8,至于原因大家可以百度Oracle发布JDK的规则,现在公司做开发也基本都是使用的JDK8,很少会使用9及以上)。 可以下载javax.activation-1.2.0.jar,jaxb-api-2.3.0.jar,jaxb-core-2.3.0.jar,jaxb-impl-2.3.0.jar四个jar包 JAXB API是java EE的API,而java EE的API不再包含对java SE 9的模块中,因此JAXB APIs不再包含在java SE 9的默认类路径中,因此引发了以上报错
Comments | 0 条评论