javax.persistence.persistenceexception:没有名为zaapmartpu的entitymanager的持久性提供程序

wn9m85ua  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(260)

我已经使用EclipselinkJPA2.1一年了。我知道这个问题以前有人问过,我见过这个,这个,这个,还有这个。
我在jdk8、tomcat8和eclipselinkjpa2.1上运行了一年多。jpa的一切都很顺利。我们决定转移到运行在Tomcat9上的JDK11服务器上。我遇到了一些错误,决定将我的ecliselink jpa库更新到ecliselink 3.0.0
现在我在一个顺利运行了一年多的jpa项目上遇到了这个错误:

  1. 16-Dec-2020 10:23:45.111 SEVERE [main] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [admin.zaapmart.ContextListener]
  2. javax.persistence.PersistenceException: No Persistence provider for EntityManager named ZaapMartPU
  3. at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
  4. at admin.zaapmart.ContextListener.loadRemoteEntityManagerFactory(ContextListener.java:192)
  5. at admin.zaapmart.ContextListener.contextInitialized(ContextListener.java:120)
  6. at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4668)
  7. at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5136)
  8. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  9. at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:713)
  10. at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:690)
  11. at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:695)
  12. at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:631)
  13. at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1832)
  14. at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
  15. at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
  16. at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
  17. at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118)
  18. at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:526)
  19. at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:425)
  20. at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1577)
  21. at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:309)
  22. at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
  23. at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)
  24. at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:367)
  25. at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:929)
  26. at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:831)
  27. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  28. at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1377)
  29. at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1367)
  30. at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
  31. at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
  32. at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
  33. at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:902)
  34. at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
  35. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  36. at org.apache.catalina.core.StandardService.startInternal(StandardService.java:423)
  37. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  38. at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:928)
  39. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  40. at org.apache.catalina.startup.Catalina.start(Catalina.java:638)
  41. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  42. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  43. at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  44. at java.base/java.lang.reflect.Method.invoke(Method.java:566)
  45. at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
  46. at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)

引发此错误的webapplicationlistener类:

  1. /**
  2. * Web application lifecycle listener.
  3. *
  4. * @author Jevison7x
  5. */
  6. public class ContextListener implements ServletContextListener
  7. {
  8. ...
  9. @Override
  10. public void contextInitialized(ServletContextEvent sce)
  11. {
  12. ...
  13. this.loadRemoteEntityManagerFactory();
  14. ...
  15. }
  16. private void loadRemoteEntityManagerFactory()
  17. {
  18. Map<String, String> persistenceMap = new HashMap<>();
  19. persistenceMap.put("javax.persistence.jdbc.url", remoteDBProperties.getProperty("zaapmart_db.url"));
  20. persistenceMap.put("javax.persistence.jdbc.user", remoteDBProperties.getProperty("db.user"));
  21. persistenceMap.put("javax.persistence.jdbc.password", remoteDBProperties.getProperty("db.pass"));
  22. persistenceMap.put("javax.persistence.jdbc.driver", remoteDBProperties.getProperty("driverName"));
  23. //Next line throws the Error
  24. DBConfiguration.remoteEntityManagerFactory = Persistence.createEntityManagerFactory("ZaapMartPU", persistenceMap);
  25. }
  26. ...

这是我的persistence.xml文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  3. <persistence-unit name="ZaapMartPU" transaction-type="RESOURCE_LOCAL">
  4. <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
  5. <class>com.zaapmart.purchases.Transaction</class>
  6. <class>com.zaapmart.products.Category</class>
  7. <class>com.zaapmart.products.Product</class>
  8. <class>com.zaapmart.products.ProductImage</class>
  9. <class>com.zaapmart.products.SubCategory</class>
  10. <class>com.zaapmart.purchases.OrderItem</class>
  11. <class>com.zaapmart.users.User</class>
  12. <class>com.zaapmart.users.Supplier</class>
  13. <class>com.zaapmart.wallet.Voucher</class>
  14. <class>com.zaapmart.purchases.TransactionHistory</class>
  15. <class>com.zaapmart.wallet.VirtualWallet</class>
  16. <class>com.zaapmart.wallet.WalletPOP</class>
  17. <class>com.zaapmart.wallet.WalletTransaction</class>
  18. <exclude-unlisted-classes>false</exclude-unlisted-classes>
  19. <properties>
  20. <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/xxx_zaapmart"/>
  21. <property name="javax.persistence.jdbc.user" value="bahaushi_zaapapp"/>
  22. <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
  23. <property name="javax.persistence.jdbc.password" value="xxxxxxx"/>
  24. </properties>
  25. </persistence-unit>
  26. </persistence>

我认为persistence.xml位于正确的位置:

以下是我的库列表:

eclipselink 3.0.0类路径:

我从这里下载了eclipslink。
有人能告诉我这里怎么了吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题