2016-11-20 13 views
0

Выполнение автономного приложения Java SE JPA бросает исключение:JPA с Java SE: javax.persistence.PersistenceException: Нет поставщика Persistence для EntityManager

javax.persistence.PersistenceException: No Persistence provider for EntityManager named test 

Я нашел несколько подобных сообщений, но я думаю, что ни один из них относится к моему случаю с EclipseLink, Java SE и без упаковки в развертываемые файлы и, следовательно, нет WEB-INF и т.д.

/src/META-INF/persistence.xml является:

<persistence> 
    <persistence-unit name="test" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <class>SomeEntity</class> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/> 
      <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/somedbname"/> 
      <property name="javax.persistence.jdbc.user" value="foo"/> 
      <property name="javax.persistence.jdbc.password" value="bar"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

следующие банки находятся на пути сборки:

  • org.eclipse.persistence.jpa-2.6.4.jar
  • EclipseLink-2.6.4.jar
  • javax.persistence-2.1.1. баночка
  • -9.4.1212.jar PostgreSQL

ответ

0

Вы должны добавить EclipseLink банки к вашей ClassPath проверить не является его уже там или нет:

System.out.println(System.getProperty("java.class.path")); 
+0

да, EclipseLink-2.6.4.jar это путь к классам – JCvanDamme

0

Я должен был обеспечить пространство имен настойчивость в persistence.xml с атрибутом в XMLNS

<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">