2013-09-15 3 views
2

Я использую EclipseLink и даже я все необходимые банку файлы, импортированные с Maven, я получаю еще исключение:EclipseLinke: Нет файлов ресурсов с именем META-INF/услуги/javax.persistence.spi: Нет PersistenceProvider не были найдены

Исключение в потоке "основного" javax.persistence.PersistenceException: нет ресурсов файлы с именем META-INF/услуги/javax.persistence.spi.PersistenceProvider были найдены. Убедитесь, что файл jar-файла поставщика сохранения находится в вашем пути к классам.

В Maven ПОМ у меня есть зависимость:

<dependency> 
     <groupId>javax.persistence</groupId> 
     <artifactId>persistence-api</artifactId> 
     <version>1.0.2</version> 
     <scope>provided</scope> 
</dependency> 

Вот мой persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" 
    xmlns="http://java.sun.com/xml/ns/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"> 
    <persistence-unit name="PersistenzJPAProjekt"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <class>com.testJPABasis.Person</class> 

    </persistence-unit> 
</persistence> 

Здесь clathpath в затмении: enter image description here

Класс, который фактически генерирует исключение:

public class TestJPA 
{ 
    public static void main(String[] args) 
    { 
     Person person = new Person(); 
     person.setPersonID(1); 

     EntityManagerFactory emf = Persistence.createEntityManagerFactory("PersistenzJPAProjekt"); 
     EntityManager em = emf.createEntityManager(); 

    } 
} 

Persistence.xml находится непосредственно под META-INF. Насколько я знаю, мне не нужно иметь Glassfish или Tomcat, поскольку EclipseLink предназначен для автономных приложений. Если я ошибаюсь, возможно, это и есть причина. Мета-Inf помещается в:

enter image description here

+0

Где находится ваш каталог META-INF, расположенный в иерархии проектов? –

+0

Я только что добавил ... извините, я забыл до – Fendrix

ответ

2

persistence-api просто что: API-интерфейсы (в основном). Вам все равно необходимо включить фактического провайдера постоянства; похоже, что вы хотите EclipseLink.

+1

thx .. оба из вас были правильными (другие удалили его сообщение, к сожалению) ... Мне нужна зависимость EclipseLink и переход Meta-Inf в src/test/resources. .. это было сложно ... – Fendrix

Смежные вопросы