【问题标题】:javax.persistence.PersistenceException: No Persistence provider for EntityManager named XX [duplicate]javax.persistence.PersistenceException:没有名为 XX 的 EntityManager 的持久性提供程序 [重复]
【发布时间】:2013-08-16 12:54:40
【问题描述】:

我在 Eclipse (Helios) IDE 中有一个简单的 JPA/Hibernate 项目。 我已将 persistence.xml 放在 Project>resources 目录中。 在 Eclipse 中,我已将此目录(Project\resources)添加到类路径中。

然而,当我在 Eclipse IDE 中运行我的 appln frm 时,我看到了这个错误: javax.persistence.PersistenceException:没有名为 XX 的 EntityManager 的持久性提供程序

在 Eclipse 中,我关注了库: hibernate3.jar hibernate-jpa-2.0-api-1.0.0.Final.jar hibernate-entitymanager-3.6.0.Final.jar 其余的都在支持罐子...

我的 persistence.xml 是:

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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_1_0.xsd"
    version="1.0">

    <persistence-unit name="XX" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <!-- the JNDI data source -->
        <non-jta-data-source>java:comp/env/jdbc/tutorialDS</non-jta-data-source>
        <properties>
            ...
        </properties>
    </persistence-unit>
</persistence>

是什么导致 Eclipse IDE 中出现此错误? 谢谢

【问题讨论】:

    标签: java eclipse hibernate jpa


    【解决方案1】:

    您是否尝试过将此persistence.xml 文件保存到类路径META-INF 文件夹中。

    {CLASS_PATH}/META-INF/persistence.xml 
    

    【讨论】:

    • 是的...我试过了,那是它原来的位置 - 它没有帮助。
    • @Jasper,您在哪里定义了 java:comp/env/jdbc/tutorialDS?请确保您的数据源可访问
    • 我已经删除了那行,它没有差异。好像没有找到persistence.xml。
    • Shammim> 我刚刚发现了问题,请看我的回答。这是我的一个错误。不过感谢您的见解。
    【解决方案2】:

    persistence.xml 必须放在 META-INF 目录中。

    编辑:不要忘记为您的数据库包含驱动程序库。

    【讨论】:

      【解决方案3】:

      那么解决办法

      在 Eclipse > 属性 > Java 构建路径
      源选项卡 - 有:排除:META-INF/
      这导致 META-INF 目录被完全忽略,并且没有找到 persistence.xml。
      删除 Excluded:META-INF/ 行后,persistence.xml 现在已成功找到。

      如何 - 排除:META-INF/ 最终出现在 Java 构建路径 >“源”选项卡中?
      早些时候在“库”选项卡下,我完成了:“添加类文件夹”:src/META-INF
      这会自动导致 Excluded: META-INF/ under 'Source' tab.

      希望这对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 2015-11-08
        • 2011-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多