2015-11-11 4 views
0

Еще один. Через 3,5 часа я перехожу к stackoverflow, чтобы узнать, может ли кто-нибудь понять, почему эта ошибка происходит.Встраиваемый Derby с JPA: поставщик с постоянством для EntityManager Named

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

Полное трассировку исключение состоит в следующем

javax.persistence.PersistenceException: No Persistence provider for EntityManager named derby 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85) 
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) 
    at mmis.mars.irs.mec.batch.DerbyTest.setup(DerbyTest.java:26) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24) 
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 

Следующие баночки ссылаются. Это JPA, eclipselink, derby и derbyclient. Я не думаю, что derbyclient нужен, но я включил его в другое сообщение о встроенном дерби с eclipselink.

  • javax.persistence_2.1.0.v201304241213.jar
  • eclipselink.jar
  • derby.jar
  • derbyclient.jar

Ниже файл persistence.xml. Он помещается внутри папки META-INF, которая находится в корневом каталоге проекта. Папка META-INF добавляется в исходную папку для проекта.

<?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="derby" transaction-type="RESOURCE_LOCAL"> 
      <class>JPA_class1</class> 
      <class>JPA_class2</class> 
      <class>JPA_class3</class> 
      <class>JPA_class4</class> 

      <properties> 
       <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" /> 
       <property name="javax.persistence.jdbc.url" value="jdbc:derby:thedb;create=true" /> 
      </properties> 
     </persistence-unit> 
    </persistence> 

включение META-INF

  • Включено: (Все)
  • Исключено: (Нет)
  • Native расположение библиотеки: (Нет)
  • Игнорировать дополнительные проблемы компиляции: (Нет)

Как и в других сообщениях, тег провайдера не требуется д.

Я попытался включить каждый тег провайдера в нужное место. Ничего не сработало.

<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> 
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 

Следующее что я пробовал с тегом поставщика.

<persistence-unit name="derby" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> 

    <class>...</class> 

    <properties> 
     ... 
    </properties> 
</persistence-unit> 

и

<persistence-unit name="derby" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 

    <class>...</class> 

    <properties> 
     ... 
    </properties> 
</persistence-unit> 

В настоящее время я запустить его в тест JUnit в папке «тест», который находится в корневом каталоге, а также включены в качестве исходной папки. Ошибка JUnit с ошибкой.

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

Ниже приведена строка кода, вызывающая ошибку.

Persistence.createEntityManagerFactory("derby").createEntityManager(); 
+0

Вам определенно не нужен derbyclient.jar, потому что вы используете Derby EmbeddedDriver и встроенный в Derby JDBC-синтаксис URL-адреса соединения.Можете ли вы предоставить полное исключение, а не только однострочное резюме? –

+0

Я добавил полный backtrace. Спасибо,^_ ^. – nestharus

+0

Вы пытались явно указать тэг 'provider' в вашем' persistence-unit'? Я не уверен, что «другие сообщения» сказали вам, что это не требуется. Единственное, что я вижу, это http://docs.oracle.com/cd/E26576_01/doc.312/e24930/jpa.htm#GSDVG00138, в котором говорится, что есть другие предпосылки, которые вы должны встретить, чтобы опустить тег 'provider'. –

ответ

0

Попробуйте проверки файл persistence.xml JPA назван и находится в "SRC/META-INF/persistence.xml" в папке проекта. Возможно, JPA не может найти блок сохранения из-за неправильного имени файла пути или неправильного имени пути для файла persistence.xml.

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