eclipselink - RCP e4 EclipseLink 错误:没有名为 EntityManager 的持久性提供程序
问题描述
我正在尝试将持久性框架应用于 eclipse rcp e4 应用程序。为此,我创建了一个功能项目的示例,几乎遵循教程https://www.vogella.com/tutorials/JavaPersistenceAPI/article.html,但适用于 rcp。但是我收到错误“找不到名为 xxx 的 EntityManager 的持久性提供程序”。我已经搜索了一个星期,但没有找到解决方案。有人可以告诉我,错误到底是什么以及如何解决它?
persistence.xml 位于项目 tasks.model 文件夹 META-INF 中。eclipse.jar和javax.persistence.jar在另一个插件项目中(之前我在pom.xml中定义了maven依赖。虽然eclipse没有报编译错误,但是运行rcp产品会导致ClassDefNotFoundException为持久化的错误,所以把javax .persistence.jar 在一个单独的插件中删除了这个错误)。一些答案建议persistence.xml 应该在文件夹src/resources/META-INF 中。但在插件项目中,META-INF 文件夹已经在其默认位置。我什至创建了一个额外的文件夹 resources/META-INF 并将 persistence.xml 放入其中,但没有帮助。如果我创建了一个普通的 Maven 项目,那么一切正常,当我在 localhost 中将数据库更改为 mysql 时也是如此。
当我调用命令时出现错误“EntityManager 没有持久性提供程序”:
factory = Persistence.createEntityManagerFactory("todos");
我的 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="todos" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>tasks.model.Todo</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="javax.persistence.jdbc.url" value="jdbc:derby:/tempGeo/simpleDB" />
<property name="javax.persistence.jdbc.user" value="test" />
<property name="javax.persistence.jdbc.password" value="test" />
<!-- EclipseLink should create the database schema automatically -->
<property name="eclipselink.ddl-generation" value="create-tables" />
<property name="eclipselink.ddl-generation.output-mode" value="database" />
</properties>
</persistence-unit>
</persistence>
解决方案
推荐阅读
- vue.js - Nuxt:根据当前域设置所有 Axios 请求的来源
- python - 从 gensim 4.0 中的词向量获取距离矩阵的 Pythonic 方法
- javascript - 将两个数组合二为一,不重复
- c# - 在 WPF C# 中为选定用户显示 Active Directory ThumbnailPhoto 属性的正确方法?
- android - MediaPlayer setDataSource 失败,状态=0x80000000
- postgresql - POSTGRES:致命:角色“用户名”不存在
- c# - 错误无法使用 .Net Core 3.1 在 Ubuntu 上加载文件或程序集 Tesseract
- vue.js - 找不到模块'wcjs-player'
- mysql - 连接到 Azure Mysql 服务器
- node.js - 为什么以及如何修复不调用 setTimeout 回调的异步函数?节点JS