Java Spring API NoClassDefFoundError: javax/persistence/EntityManagerFactoryJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java Spring API NoClassDefFoundError: javax/persistence/EntityManagerFactory

Сообщение Anonymous »

Я хочу создать свой первый Java API с помощью Spring, поэтому для начала я решил создать простой API, который позволит перечислять всех людей, одного человека по идентификатору и создавать одного человека. Я успешно компилировал, но когда я запускаю ./mvnw Spring-boot:run, у меня возникает эта ошибка:

Код: Выделить всё

java.lang.NoClassDefFoundError: javax/persistence/EntityManagerFactory
at org.springframework.data.jpa.util.BeanDefinitionUtils.(BeanDefinitionUtils.java:57) ~[spring-data-jpa-2.7.18.jar:2.7.18]
at org.springframework.data.jpa.repository.support.EntityManagerBeanDefinitionRegistrarPostProcessor.postProcessBeanFactory(EntityManagerBeanDefinitionRegistrarPostProcessor.java:72) ~[spring-data-jpa-2.7.18.jar:2.7.18]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:325) ~[spring-context-5.3.31.jar:5.3.31]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:191) ~[spring-context-5.3.31.jar:5.3.31]
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:756) ~[spring-context-5.3.31.jar:5.3.31]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:572) ~[spring-context-5.3.31.jar:5.3.31]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.18.jar:2.7.18]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) ~[spring-boot-2.7.18.jar:2.7.18]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:409) ~[spring-boot-2.7.18.jar:2.7.18]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-2.7.18.jar:2.7.18]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1300) ~[spring-boot-2.7.18.jar:2.7.18]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1289) ~[spring-boot-2.7.18.jar:2.7.18]
at com.example.demo.DemoApplication.main(DemoApplication.java:10) ~[classes/:na]
Caused by: java.lang.ClassNotFoundException: javax.persistence.EntityManagerFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[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:527) ~[na:na]
...  13 common frames omitted
Структура моего проекта:

Код: Выделить всё

.
├── mvnw
├── mvnw.cmd
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── demo
│   │   │               ├── controller
│   │   │               │   └── PersonController.java
│   │   │               ├── DemoApplication.java
│   │   │               ├── model
│   │   │               │   └── Person.java
│   │   │               └── repository
│   │   │                   └── PersonRepository.java
│   │   └── resources
│   │       ├── application.properties
│   │       ├── data.sql
│   │       ├── schema.sql
│   │       ├── static
│   │       └── templates
│   └── test
└── target
Мой PersonController:

Код: Выделить всё

package com.example.demo.controller;

import com.example.demo.model.Person;
import com.example.demo.repository.PersonRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/persons")
public class PersonController {

@Autowired
private PersonRepository personRepository;

@GetMapping
public List
  getAllPersons() {
return personRepository.findAll();
}

@GetMapping("/{id}")
public Person getPersonById(@PathVariable Long id) {
return personRepository.findById(id).orElse(null);
}

@PostMapping
public Person createPerson(@RequestBody Person person) {
return personRepository.save(person);
}
}
Класс My Person:

Код: Выделить всё

package com.example.demo.model;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import java.time.LocalDate;

@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nom;
private String prenom;
private LocalDate dateNaissance;
private String numTelephone;
private String mail;

}
Мой pom.xml:

Код: Выделить всё

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.example
demo
0.0.1-SNAPSHOT
jar
demo
Demo project for Spring Boot


org.springframework.boot
spring-boot-starter-parent
2.7.18




11




org.springframework.boot
spring-boot-starter-data-jpa


org.springframework.boot
spring-boot-starter-web


com.h2database
h2
runtime


org.springframework.boot
spring-boot-starter-test
test


jakarta.persistence
jakarta.persistence-api
3.1.0








org.springframework.boot
spring-boot-maven-plugin


org.apache.maven.plugins
maven-compiler-plugin
3.8.1

11
11





Я использую OpenJDK 11 с Maven, и, если я правильно понял, javax был заменен на jakarta, поэтому я изменил зависимость в моем pom.xml, но я этого не сделал. знаю, почему ошибка по-прежнему относится к javax.

Я пытался заменить зависимость jakarta.persistence на javax.persistence, но теперь она не компилируется, поэтому я думаю, что это не очень хороший способ.
У кого-нибудь есть идеи, как помочь новичку в Java?

Подробнее здесь: https://stackoverflow.com/questions/787 ... gerfactory
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»