Bean not found exception, caused by java.lang.ClassNotFoundException: jakarta.persistence.PersistenceContext

huangapple go评论174阅读模式
英文:

Bean not found exception, caused by java.lang.ClassNotFoundException: jakarta.persistence.PersistenceContext

问题

在Spring Boot 3.1.0和JDK 17上创建一个Rest API应用程序后,在pom.xml中添加了spring-boot-starter-data-jpa依赖项后,开始出现以下错误。无论我添加或删除任何依赖项(在添加了spring-boot-starter-data-jpa之后),都会始终出现java.lang.ClassNotFoundException: jakarta.persistence.PersistenceContext异常。

日志信息:

  1. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator': Post-processing of merged bean definition failed
  2. 19-06-2023 18:04:49.834 [main]
  3. ERROR org.springframework.boot.SpringApplication.reportFailure - Application run failed
  4. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator': Post-processing of merged bean definition failed
  5. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:575)
  6. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
  7. at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
  8. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
  9. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
  10. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205)
  11. at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:261)
  12. at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:787)
  13. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:592)
  14. at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
  15. at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:733)
  16. at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:435)
  17. at org.springframework.boot.SpringApplication.run(SpringApplication.java:311)
  18. at org.springframework.boot.SpringApplication.run(SpringApplication.java:1305)
  19. at org.springframework.boot.SpringApplication.run(SpringApplication.java:1294)
  20. at com.sunday.locateyourplace.locateyourplaceapp.LocateYourPlaceApplication.main(LocateYourPlaceApplication.java:12)
  21. Caused by: java.lang.NoClassDefFoundError: jakarta/persistence/PersistenceContext
  22. at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.buildPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:425)
  23. at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:416)
  24. at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findInjectionMetadata(PersistenceAnnotationBeanPostProcessor.java:370)
  25. at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(PersistenceAnnotationBeanPostProcessor.java:353)
  26. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:1083)
  27. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)
  28. ... 15 common frames omitted
  29. Caused by: java.lang.ClassNotFoundException: jakarta.persistence.PersistenceContext
  30. at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
  31. at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
  32. at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
  33. ... 21 common frames omitted

pom.xml文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>3.1.0</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.sunday.locateyourplace</groupId>
  12. <artifactId>locate-your-place-svc</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>locate-your-place-service</name>
  15. <description>locate your place service</description>
  16. <properties>
  17. <java.version>17</java.version>
  18. <io.swagger.version>1.6.2</io.swagger.version>
  19. </properties>
  20. <dependencies>
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-web</artifactId>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.projectlombok</groupId>
  27. <artifactId>lombok</artifactId>
  28. <optional>true</optional>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.springframework.boot</groupId>
  32. <artifactId>spring-boot-starter-test</artifactId>
  33. <scope>test</scope>
  34. </dependency>
  35. <dependency>
  36. <groupId>io.swagger</groupId>
  37. <artifactId>swagger-annotations</artifactId>
  38. <version>${io.swagger.version}</version>
  39. </dependency>
  40. <dependency>
  41. <groupId>io.springfox</groupId>
  42. <artifactId>springfox-swagger2</artifactId>
  43. <version>3.0.0</version>
  44. </dependency>
  45. <dependency>
  46. <groupId>org.springframework.boot</groupId>
  47. <artifactId>spring-boot-starter-validation</artifactId>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.springframework.boot</groupId>
  51. <artifactId>spring-boot-starter-security</artifactId>
  52. </dependency>
  53. <dependency>
  54. <groupId>org.apache.commons</groupId>
  55. <artifactId>commons-lang3</artifactId>
  56. <version>3.12.0</version>
  57. </dependency>
  58. <dependency>
  59. <groupId>org.postgresql</groupId>
  60. <artifactId>postgresql</artifactId>
  61. <scope>runtime</scope>
  62. </dependency>
  63. <dependency>
  64. <groupId>org.springframework.boot</groupId>
  65. <artifactId>spring-boot-starter-data-jpa</artifactId>
  66. </dependency>
  67. </dependencies>
  68. <build>
  69. <plugins>
  70. <plugin>
  71. <groupId>org.springframework.boot</groupId>
  72. <artifactId>spring-boot-maven-plugin</artifactId>
  73. <configuration>
  74. <excludes>
  75. <exclude>
  76. <groupId>org.projectlombok</groupId>
  77. <artifactId>lombok</artifactId>
  78. </exclude>
  79. </excludes>
  80. </configuration>
  81. </plugin>
  82. <plugin>
  83. <groupId>org.apache
  84. <details>
  85. <summary>英文:</summary>
  86. Creating a Rest API application on spring Boot: 3.1.0 and JDK 17.
  87. After adding **spring-boot-starter-data-jpa** dependency in pom.xml, started getting the below error. Irrespective of whatever dependency i add or remove(after adding spring-boot-starter-data-jpa), it&#39;s always giving **java.lang.ClassNotFoundException: jakarta.persistence.PersistenceContext** exception.
  88. Log:

ringframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator': Post-processing of merged bean definition failed
19-06-2023 18:04:49.834 [main]
ERROR org.springframework.boot.SpringApplication.reportFailure - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.config.internalAutoProxyCreator': Post-processing of merged bean definition failed
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:575)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205)
at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:261)
at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:787)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:592)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:733)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:435)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:311)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1305)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1294)
at com.sunday.locateyourplace.locateyourplaceapp.LocateYourPlaceApplication.main(LocateYourPlaceApplication.java:12)
Caused by: java.lang.NoClassDefFoundError: jakarta/persistence/PersistenceContext
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.buildPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:425)
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:416)
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findInjectionMetadata(PersistenceAnnotationBeanPostProcessor.java:370)
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(PersistenceAnnotationBeanPostProcessor.java:353)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:1083)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572)
... 15 common frames omitted
Caused by: java.lang.ClassNotFoundException: jakarta.persistence.PersistenceContext
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 21 common frames omitted

  1. pom.xml file:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.sunday.locateyourplace</groupId>
<artifactId>locate-your-place-svc</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>locate-your-place-service</name>
<description>locate your place service</description>
<properties>
<java.version>17</java.version>
<io.swagger.version>1.6.2</io.swagger.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

  1. &lt;dependency&gt;
  2. &lt;groupId&gt;org.projectlombok&lt;/groupId&gt;
  3. &lt;artifactId&gt;lombok&lt;/artifactId&gt;
  4. &lt;optional&gt;true&lt;/optional&gt;
  5. &lt;/dependency&gt;
  6. &lt;dependency&gt;
  7. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  8. &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
  9. &lt;scope&gt;test&lt;/scope&gt;
  10. &lt;/dependency&gt;
  11. &lt;dependency&gt;
  12. &lt;groupId&gt;io.swagger&lt;/groupId&gt;
  13. &lt;artifactId&gt;swagger-annotations&lt;/artifactId&gt;
  14. &lt;version&gt;${io.swagger.version}&lt;/version&gt;
  15. &lt;/dependency&gt;
  16. &lt;dependency&gt;
  17. &lt;groupId&gt;io.springfox&lt;/groupId&gt;
  18. &lt;artifactId&gt;springfox-swagger2&lt;/artifactId&gt;
  19. &lt;version&gt;3.0.0&lt;/version&gt;
  20. &lt;/dependency&gt;
  21. &lt;dependency&gt;
  22. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  23. &lt;artifactId&gt;spring-boot-starter-validation&lt;/artifactId&gt;
  24. &lt;/dependency&gt;
  25. &lt;dependency&gt;
  26. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  27. &lt;artifactId&gt;spring-boot-starter-security&lt;/artifactId&gt;
  28. &lt;/dependency&gt;
  29. &lt;dependency&gt;
  30. &lt;groupId&gt;org.apache.commons&lt;/groupId&gt;
  31. &lt;artifactId&gt;commons-lang3&lt;/artifactId&gt;
  32. &lt;version&gt;3.12.0&lt;/version&gt;
  33. &lt;/dependency&gt;
  34. &lt;dependency&gt;
  35. &lt;groupId&gt;org.postgresql&lt;/groupId&gt;
  36. &lt;artifactId&gt;postgresql&lt;/artifactId&gt;
  37. &lt;scope&gt;runtime&lt;/scope&gt;
  38. &lt;/dependency&gt;
  39. &lt;dependency&gt;
  40. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  41. &lt;artifactId&gt;spring-boot-starter-data-jpa&lt;/artifactId&gt;
  42. &lt;/dependency&gt;
  43. &lt;/dependencies&gt;
  44. &lt;build&gt;
  45. &lt;plugins&gt;
  46. &lt;plugin&gt;
  47. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  48. &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
  49. &lt;configuration&gt;
  50. &lt;excludes&gt;
  51. &lt;exclude&gt;
  52. &lt;groupId&gt;org.projectlombok&lt;/groupId&gt;
  53. &lt;artifactId&gt;lombok&lt;/artifactId&gt;
  54. &lt;/exclude&gt;
  55. &lt;/excludes&gt;
  56. &lt;/configuration&gt;
  57. &lt;/plugin&gt;
  58. &lt;plugin&gt;
  59. &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
  60. &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
  61. &lt;configuration&gt;
  62. &lt;source&gt;17&lt;/source&gt;
  63. &lt;target&gt;17&lt;/target&gt;
  64. &lt;/configuration&gt;
  65. &lt;/plugin&gt;
  66. &lt;/plugins&gt;
  67. &lt;/build&gt;

</project>

  1. In the application.properties file i have added configuration for postgresql db connectivity.

spring.jpa.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
#spring.liquibase.change-log=classpath:db/changelog/db.changelog-master.xml
spring.jpa.properties.hibernate.auto_quote_keyword=true
spring.datasource.url=jdbc:postgresql://localhost/locateyourplace
spring.datasource.username=postgres
spring.datasource.password=*******
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.show-sql=true

  1. Repository file:

@Repository
public interface UserAuthenticationRepository extends CrudRepository<UserDetails, String> {

}

  1. </details>
  2. # 答案1
  3. **得分**: 1
  4. 修复你的依赖关系,你正在尝试太多,并混合了不同版本的Spring Boot JAR包。
  5. 假设你正在使用`spring-boot-starter-parent`作为你的父级依赖,并具有正确的版本。
  6. 1. 从`spring-boot-starter-*`依赖中移除版本标签。
  7. 2. 移除`jakarta.persistence` / `jakarta.validation`依赖。
  8. 3. `spring-security-crypto`也来自不兼容的版本。
  9. 4. 移除`spring-data-jpa`。
  10. 5. 显然你想要添加验证,请添加`spring-boot-starter-validation`。
  11. 6. 移除`spring-web`依赖,因为它已经包含在`spring-boot-starter-web`中。
  12. **免费额外建议:** 从你的存储库接口中移除`@Repository`,它只会增加混乱。Spring Data有其他方式来检测存储库。
  13. <details>
  14. <summary>英文:</summary>
  15. Fix your dependencies, you are trying to much and are mixing jars from different version of Spring Boot.
  16. Assuming you are using `spring-boot-starter-parent` as your parent with the proper version.
  17. 1. Remove the version tags from the `spring-boot-starter-*` dependencies
  18. 2. Remove the `jakarta.persistence` / `jakarta.validation` dependencies
  19. 3. `spring-security-crypto` is from an incompatible version as well
  20. 4. remove `spring-data-jpa`
  21. 5. Apparently you want validation add `spring-boot-starter-validation`.
  22. 6. Remove `spring-web` dependency, already part of the `spring-boot-starter-web`.
  23. ```xml
  24. &lt;parent&gt;
  25. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  26. &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
  27. &lt;version&gt;3.1.0&lt;/version&gt;
  28. &lt;/parent&gt;
  29. &lt;dependencies&gt;
  30. &lt;dependency&gt;
  31. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  32. &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
  33. &lt;/dependency&gt;
  34. &lt;dependency&gt;
  35. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  36. &lt;artifactId&gt;spring-boot-starter-data-jpa&lt;/artifactId&gt;
  37. &lt;/dependency&gt;
  38. &lt;dependency&gt;
  39. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  40. &lt;artifactId&gt;spring-boot-starter-validation&lt;/artifactId&gt;
  41. &lt;/dependency&gt;
  42. &lt;dependency&gt;
  43. &lt;groupId&gt;org.projectlombok&lt;/groupId&gt;
  44. &lt;artifactId&gt;lombok&lt;/artifactId&gt;
  45. &lt;optional&gt;true&lt;/optional&gt;
  46. &lt;/dependency&gt;
  47. &lt;dependency&gt;
  48. &lt;groupId&gt;org.postgresql&lt;/groupId&gt;
  49. &lt;artifactId&gt;postgresql&lt;/artifactId&gt;
  50. &lt;/dependency&gt;
  51. &lt;dependency&gt;
  52. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  53. &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
  54. &lt;scope&gt;test&lt;/scope&gt;
  55. &lt;/dependency&gt;
  56. &lt;dependency&gt;
  57. &lt;groupId&gt;io.swagger&lt;/groupId&gt;
  58. &lt;artifactId&gt;swagger-annotations&lt;/artifactId&gt;
  59. &lt;version&gt;${io.swagger.version}&lt;/version&gt;
  60. &lt;/dependency&gt;
  61. &lt;dependency&gt;
  62. &lt;groupId&gt;io.springfox&lt;/groupId&gt;
  63. &lt;artifactId&gt;springfox-swagger2&lt;/artifactId&gt;
  64. &lt;version&gt;3.0.0&lt;/version&gt;
  65. &lt;/dependency&gt;
  66. &lt;dependency&gt;
  67. &lt;groupId&gt;org.springframework.security&lt;/groupId&gt;
  68. &lt;artifactId&gt;spring-security-crypto&lt;/artifactId&gt;
  69. &lt;/dependency&gt;
  70. &lt;dependency&gt;
  71. &lt;groupId&gt;org.apache.commons&lt;/groupId&gt;
  72. &lt;artifactId&gt;commons-lang3&lt;/artifactId&gt;
  73. &lt;version&gt;3.12.0&lt;/version&gt;
  74. &lt;/dependency&gt;
  75. &lt;/dependencies&gt;

Free bonus: Remove the @Repository from your repository interface, it doesn't add anything but clutter. Spring Data has other means of detecting the repositories.

huangapple
  • 本文由 发表于 2023年6月19日 20:46:46
  • 转载请务必保留本文链接:https://go.coder-hub.com/76506775.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定