在Maven测试期间找不到persistence.xml
我试图在进行集成测试的Maven构建期间将测试数据加载到测试数据库中。 persistence.xml已正确复制到target / test-classes / META-INF /
,但是运行测试时出现此异常。
javax.persistence.PersistenceException: No Persistence provider for EntityManager named aimDatabase
好像没有找到或者加载persistence.xml。
解决方案
回答
如果在Windows上,则可以使用sysinternal的procmon来确定它是否在检查正确的路径。
只需按路径过滤->包含-> persistence.xml。 Procmon将采取任何尝试打开名为persistenc.xml的文件的尝试,我们可以检查查看尝试的一个或者多个路径。
有关procmon的更多详细信息,请参见此处:http://technet.microsoft.com/zh-cn/sysinternals/bb896645.aspx
回答
我有同样的问题,不是不是找不到persistence.xml文件,而是找不到XML中指定的提供程序。
确保xml文件中具有正确的JPA提供程序依赖关系和正确的提供程序定义。
IE。 <provider> oracle.toplink.essentials.PersistenceProvider </ provider>
使用Maven时,我必须在本地安装2个toplink-essentials jar,因为没有公共存储库可以保存依赖关系。
回答
我们遇到了同样的问题,对项目进行了一些调整,最后找到了以下内容
问题(更清晰的错误描述):
在oracle.toplink.essentials.ejb.cmp3.persistence中。
PersistenceUnitProcessor.computePURootURL(PersistenceUnitProcessor.java:248)
利用这些信息,我们回顾了一个主要规则:
路径名中没有白色空间!!!
试试这个。为我们工作的微笑。
也许有一天这将得到解决。
希望这对我们有用。祝你好运。
回答
我正在使用Maven2,却忘记在pom.xml文件中添加此依赖项:
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>3.4.0.GA</version> </dependency>
回答
刚刚使用基于Maven / Eclipse的JPA项目解决了相同的问题。
我的META-INF目录位于src / main / java下,其结果是在测试阶段之前未将其复制到目标目录。
将目录移动到src / main / resources可以解决问题,并确保在运行测试时target / classes中存在META-INF / persistence.xml文件。
我认为JPA方面将我的META-INF / persistence.xml文件放在src / main / java中,这是我问题的根源。
回答
persistence.xml是否位于scr / test / resources中?原因我遇到了类似的问题。
只要我的persistence.xml位于src / main / resources中,一切都可以正常工作。
如果我将persistence.xml移至src / test / resources,则无法再使用了。
唯一有用但可悲的答案是在这里:http://jira.codehaus.org/browse/SUREFIRE-427
似乎由于不明原因目前无法实现。 :-(