Javax.persistence.PersistenceException: нет поставщика сохраняемости для EntityManager

Я пытаюсь настроить тестовый проект REST с Джерси, используя EclipseLink как ORM и Gradle.

Когда я хотел протестировать функциональность ORM, я обнаружил следующее исключение:

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named TestPU
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at com.resttest.SeedTest.main(SeedTest.java:13)

Выполняем следующий код:

package com.resttest;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import com.resttest.entity.User;

public class SeedTest
{
public static void main(String[] args)
{
    EntityManagerFactory factory = Persistence.createEntityManagerFactory("TestPU");
    EntityManager em = factory.createEntityManager();

    em.getTransaction().begin();

    User user = new User();
    user.setEmail("Joe");
    user.setPassword("xxx");

    em.persist(user);
    em.getTransaction().commit();

    em.close();
}
}

Мой файл build.gradle выглядит так:

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'war'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile 'javax.ws.rs:jsr311-api:1.1.1'

    compile 'com.sun.jersey:jersey-server:1.19.4'
    compile 'com.sun.jersey:jersey-core:1.19.4'
    compile 'com.sun.jersey:jersey-servlet:1.19.4'

    compile 'mysql:mysql-connector-java:5.1.47'
    compile 'org.eclipse.persistence:eclipselink:2.5.1'
}

Это мой файл persistence.xml:

<?xml version = "1.0" encoding = "UTF-8" ?>
<persistence xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version = "2.0" xmlns = "http://java.sun.com/xml/ns/persistence">

<persistence-unit name = "TestPU" transaction-type = "RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
        <property name = "javax.persistence.jdbc.driver" value = "com.mysql.jdbc.Driver" />
        <property name = "javax.persistence.jdbc.url" value = "jdbc:mysql://localhost:3306/test" />
        <property name = "javax.persistence.jdbc.user" value = "root" />
        <property name = "javax.persistence.jdbc.password" value = "root" />
    </properties>
</persistence-unit>

В ответах на этот вопрос говорилось, что вы должны добавить библиотеку поставщика JPA в путь к классам (хотя это всегда спрашивалось с Hibernate), но EclipseLink уже добавлен в мой путь к классам, поэтому этого не может быть. В чем проблема?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
125
1

Ответы 1

Хорошо, это неловко, но, по-видимому, одна из настроек моей исходной папки потерялась в eclipse, и поэтому мой файл persistence.xml не был распознан.

Другие вопросы по теме