在maven测试期间找不到persistence.xml

我正在尝试在用于集成测试的maven构建期间将测试数据加载到测试数据库中。 persistence.xml正在被正确地复制到target/test-classes/META-INF/ ,但是在运行测试时我得到了这个exception。

javax.persistence.PersistenceException:没有名为aimDatabase的EntityManager的持久性提供程序

看起来它没有找到或加载persistence.xml。

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

我在src/main/java下有我的META-INF目录,并且在测试阶段之前没有将它复制到目标目录。

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

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

我正在使用Maven2,我忘了在我的pom.xml文件中添加这个依赖项:

   org.hibernate hibernate-entitymanager 3.4.0.GA  

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

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

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

我遇到了同样的问题,并不是它找不到persistence.xml文件,而是找不到XML中指定的提供程序。

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

即。 oracle.toplink.essentials.PersistenceProvider

有了maven,我不得不在本地安装2个toplink-essentialsjar子,因为没有公共存储库可以保留依赖性。

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

有了这些信息,我们回想起了一条主要规则:道路名称中没有白色空间!

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

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

你的persistence.xml是否位于scr / test / resources中? 因为我遇到了类似的问题。

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

如果我将persistence.xml移动到src / test / resources就不再有效了。

唯一有用但令人悲伤的答案是: http : //jira.codehaus.org/browse/SUREFIRE-427

似乎现在不可能出于不明原因。 🙁