【问题标题】:persistence.xml not found during maven testing在 Maven 测试期间未找到 persistence.xml
【发布时间】:2010-09-09 17:57:02
【问题描述】:

我正在尝试在 Maven 构建期间将测试数据加载到测试数据库中以进行集成测试。 persistence.xml 被正确复制到target/test-classes/META-INF/,但在运行测试时出现此异常。

javax.persistence.PersistenceException: 没有持久性提供程序 EntityManager 命名为目标数据库

它似乎没有找到或加载persistence.xml。

【问题讨论】:

    标签: java testing maven-2 jpa automated-tests


    【解决方案1】:

    刚刚用基于 Maven/Eclipse 的 JPA 项目解决了同样的问题。

    我的 META-INF 目录位于 src/main/java 下,因为在测试阶段之前它没有被复制到目标目录。

    将此目录移动到src/main/resources 解决了问题,并确保在运行测试时META-INF/persistence.xml 文件存在于target/classes 中。

    认为 JPA 方面将我的META-INF/persistence.xml 文件放在src/main/java 中,结果证明这是我的问题的根源。

    【讨论】:

    • 非常感谢,这节省了数小时的故障排除时间!
    • +1:谢谢 Jhumble,我花了一天的大部分时间来弄清楚为什么它在 Eclipse 中有效,但在 Maven 中无效。就是这样!
    【解决方案2】:

    您的 persistence.xml 是否位于 scr/test/resources 中?因为我也面临着类似的问题。

    只要我的 persistence.xml 位于 src/main/resources 中,一切正常。

    如果我将 persistence.xml 移动到 src/test/resources 就没有任何效果了。

    唯一有用但悲伤的答案在这里:http://jira.codehaus.org/browse/SUREFIRE-427

    由于不明原因,现在似乎不可能。 :-(

    【讨论】:

      【解决方案3】:

      我正在使用 Maven2,但我忘记在我的 pom.xml 文件中添加此依赖项:

       <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-entitymanager</artifactId>
         <version>3.4.0.GA</version>
       </dependency> 
      

      【讨论】:

        【解决方案4】:

        我们遇到了同样的问题,对项目进行了一些调整,最后发现以下问题 问题(更清晰的错误描述): 在 oracle.toplink.essentials.ejb.cmp3.persistence。 PersistenceUnitProcessor.computePURootURL(PersistenceUnitProcessor.java:248)

        根据这些信息,我们回顾了一个主要规则: 路径名中没有空格!!!

        试试这个。为我们工作微笑。 也许有一天会解决这个问题。

        希望这对你有用。祝你好运。

        【讨论】:

          【解决方案5】:

          我也遇到了同样的问题,不是找不到persistence.xml文件,而是找不到XML中指定的provider。

          确保您的 xml 文件中有正确的 JPA 提供程序依赖项和正确的提供程序定义。

          即。 &lt;provider&gt;oracle.toplink.essentials.PersistenceProvider&lt;/provider&gt;

          使用 maven,我必须在本地安装 2 个 toplink-essentials jar,因为没有保存依赖项的公共存储库。

          【讨论】:

            【解决方案6】:

            如果这是在 Windows 上,您可以使用 sysinternal 的 procmon 来确定它是否正在检查正确的路径。

            只需按路径过滤 -> 包含 -> persistence.xml。 Procmon 将拾取任何打开名为 persistenc.xml 的文件的尝试,您可以检查以查看尝试的路径。

            有关 procmon 的更多详细信息,请参见此处:http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-01-21
              • 2020-04-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多