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

时间:2020-03-05 18:57:05  来源:igfitidea点击:

我试图在进行集成测试的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

似乎由于不明原因目前无法实现。 :-(