【问题标题】:Error creating bean with name 'entityManagerFactory' when add spring boot jpa dependency添加spring boot jpa依赖项时创建名称为“entityManagerFactory”的bean时出错
【发布时间】:2023-03-22 02:15:01
【问题描述】:

我在尝试将 JPA 添加到我的 Spring Boot 程序时遇到问题。一切正常,直到我将以下内容添加到我的 pom.xml 中(我还没有添加任何与 JPA Hibernate 相关的代码)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

运行创建的 jar 文件时出现以下错误。使用 mvn clean package 编译不会返回错误。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628) ~[spring-beans-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1078) ~[spring-context-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:857) ~[spring-context-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) ~[spring-context-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) [spring-boot-1.5.8.RELEASE.jar!/:1.5.8.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) [spring-boot-1.5.8.RELEASE.jar!/:1.5.8.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) [spring-boot-1.5.8.RELEASE.jar!/:1.5.8.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) [spring-boot-1.5.8.RELEASE.jar!/:1.5.8.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) [spring-boot-1.5.8.RELEASE.jar!/:1.5.8.RELEASE]
at hello.App.main(App.java:19) [classes!/:0.1.0]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [gs-consuming-rest-0.1.0.jar:0.1.0]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [gs-consuming-rest-0.1.0.jar:0.1.0]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) [gs-consuming-rest-0.1.0.jar:0.1.0]
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) [gs-consuming-rest-0.1.0.jar:0.1.0]

Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
at org.hibernate.boot.spi.XmlMappingBinderAccess.<init>(XmlMappingBinderAccess.java:43) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.boot.MetadataSources.<init>(MetadataSources.java:87) ~[hibernate-core-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:179) ~[hibernate-entitymanager-5.0.12.Final.jar!/:5.0.12.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.<init>(EntityManagerFactoryBuilderImpl.java:149) ~[hibernate-entitymanager-5.0.12.Final.jar!/:5.0.12.Final]
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:54) ~[spring-orm-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:353) ~[spring-orm-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:370) ~[spring-orm-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:359) ~[spring-orm-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) ~[spring-beans-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) ~[spring-beans-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
... 23 common frames omitted


Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563) ~[na:na]
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94) ~[gs-consuming-rest-0.1.0.jar:0.1.0]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) ~[na:na]
... 33 common frames omitted

如果我删除 spring-boot-starter-data-jpa 那么一切正常。

请帮助或指导我如何检查。

我查看了Error creating bean with name 'entityManagerFactory' defined in class path resource : Invocation of init method failed 此处的所有回复,但没有发现任何适合我的情况

【问题讨论】:

  • 还有ClassNotFoundException: javax.xml.bind.JAXBException?也许你需要把它放在 CLASSPATH ...

标签: spring hibernate maven jpa spring-boot


【解决方案1】:

我想你的依赖是冲突的。您可以使用控制台中的命令检查它。

mvn dependency:tree -Dverbose

祝你好运。

【讨论】:

  • 哦,谢谢。我记得在 Eclipse 中检查并看到一些 jar 被省略但不知道 Dverbose 所以我的 mvn 树看起来很正常。我还尝试排除一些省略的 jar,但仍然无法正常工作。我应该如何检查我应该使用的 entitybeanmanager 版本?
  • 你的意思是你删除 jpa 然后它工作正常。因此,您可能无法在 Spring Boot 应用程序中正确使用它。可以参考帖子javabycode.com/spring-framework-tutorial/spring-boot-tutorial/…中spring boot中使用Jpa的方式@
  • 我还没有将任何与 JPA 相关的代码放在其他类中。我的意思是“删除 JPA 然后它工作正常”是在我的 pom.xml 文件中,如果我不添加“spring-boot-starter-data-jpa”的依赖项,那么应用程序编译并正确运行。所以很可能是错误的配置,但我不知道如何检查所需的版本以及缺少什么
  • 我如何知道依赖项是否冲突?
【解决方案2】:
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
</dependency>

pom.xml中添加这个依赖

最新版本可以在这里找到:mvnrepository.com

【讨论】:

  • 谢谢...我会尝试添加并更新。只是想检查一下,对于我浏览过的所有教程,都没有提到添加 xml 和 eclipselink 依赖项的要求。如果我在 Eclipse 和其他 IDE 中创建项目,它的运行方式会有所不同吗?
  • 非常感谢。它现在正在工作。你知道它是否包含在任何其他罐子里吗?由于我浏览了在线教程,没有人提到包含这种依赖关系。
  • 其他教程中没有提到,因为这些都是基于 java8 的,JDK8 默认包含这些类。但是,您使用的 Java 9(Spring Boot 实际上还不支持!)不再包含 JAXB...
  • 这个解决方案对我有用,因为我在 YouTube 上遵循了 Spring Boot 教程。
  • 谢谢!!此解决方案适用于 Spring Boot 和 Java 10。
【解决方案3】:

在 Eclipse 或 STS 等任何 IDE 中的 VM 参数中尝试以下行

--add-modules java.xml.bind

祝你好运……!!

【讨论】:

    【解决方案4】:

    您可以通过在项目库中使用 rt.jar 文件导入来解决此问题 否 1 右键单击​​您的项目转到属性

    No 2点击Java Build Path

    然后看右边点击Add Variables

    No 3打开一个新窗口点击Extent按钮

    No 4 C:\Program Files\Java\jre1.8.0_111\lib\rt.jar 设置路径并给出变量名(a​​aa) 不是变量名问题 你可以用你的名字 asif

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-22
      • 2017-01-09
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 2018-01-13
      • 1970-01-01
      • 2021-02-04
      相关资源
      最近更新 更多