9

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

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

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

4

6 回答 6

16

刚刚用基于 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,结果证明这是我的问题的根源。

于 2010-01-25T08:49:26.447 回答
6

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

 <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-entitymanager</artifactId>
   <version>3.4.0.GA</version>
 </dependency> 
于 2009-09-04T16:30:04.300 回答
2

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

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

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

于 2008-09-17T00:23:58.350 回答
2

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

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

IE。<provider>oracle.toplink.essentials.PersistenceProvider</provider>

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

于 2008-10-24T00:35:05.097 回答
2

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

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

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

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

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

于 2010-07-09T11:45:26.207 回答
1

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

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

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

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

于 2008-11-07T14:14:28.267 回答