我有以下Maven项目结构:
Example
-Persistence
-GWTApp
持久性具有持久性.xml在src/main/resources/META-INF
中,并且在单一测试中工作正常。
我需要在GWTApp项目中使用它。所以,我把它添加为天赋。喜欢这个:
<dependency>
<groupId>com.example</groupId>
<artifactId>Persistence</artifactId>
<version>0.0.1</version>
</dependency>
有了这个,我可以在我的 web 应用程序中查看和使用持久性类,但是,当我在 eclipse 中运行 web 项目时,我收到此错误:
javax.persistence.PersistenceException: No Persistence provider for EntityManager named exemplo
我认为这是因为 eclipse 在引用 webapp 项目中的持久性项目而不是使用 jar 文件的项目之间完成了这个"链接"。也许我错了,这只是一个猜测。
有人知道我该如何解决这个问题吗?提前谢谢。
编辑
我做了更多的测试,现在我相信问题只是 GWT 开发模式和 JPA 或其他东西。我尝试手动复制持久性.xml weapp/META-INF
和target/project-webapp-0.0.1-SNAPSHOT/META-INF
,但错误仍然存在。
知道吗?
是否正确启动应用程序? https://developers.google.com/eclipse/docs/faq#gwt_with_maven
特别要注意的是,你必须"mvn war:exploded"来复制你的依赖项 target/myapp-0.0.1-SNAPSHOT/WEB-INF/lib
我假设你使用的是M2E。如果是,请打开持久性项目的"配置构建路径"对话框(右键单击构建路径,然后选择"构建路径"子菜单)。
如果你看一下"resources"文件夹,我怀疑你会看到"Excluded: **";这会阻止Eclipse将文件复制到本地输出目录中,并且还阻止它们可用于依赖项目。选择该行,然后单击"删除"
我不知道为什么 M2E 会这样做,我知道有禁用它的偏好,但我只是手动执行此操作。