2012-06-20 46 views
0

我试图做一个简单的吉斯持久性测试,不幸的是我得到了这一点:的Maven无法找到的persistence.xml

javax.persistence.PersistenceException: No Persistence provider for EntityManager named test 
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) 
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32) 
at com.google.inject.persist.jpa.JpaPersistService.start(JpaPersistService.java:94) 
at utfpr.edu.br.client.PersistenceTestModule.getInjector(PersistenceTestModule.java:22) 
at utfpr.edu.br.client.PessoaDaoTeste.<init>(PessoaDaoTeste.java:19) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:187) 
at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:236) 
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:233) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
at org.junit.runner.JUnitCore.run(JUnitCore.java:157) 
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76) 
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195) 
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 

第一:我的persistence.xml是在正确的地方资源/ META-INF 第二:是的,我把正确的提供者:org.hibernate.ejb.HibernatePersistence

有人可以帮忙吗?

+1

post persistence.xml – Ilya

回答

0

Fix'd我不知道为什么,但我修改我的pom.xml改变所有吉斯版本的方式:

<version>${guice.version}</version> 

还属性

<properties> 
    <guice.version>3.0</guice.version> 
</properties> 

,它无论如何努力的,谢谢。

1

你的persistence.xml应该发现,在运行期间,在

WEB-INF/classes/META-INF/ . 

然而,投入开发资源文件夹/ META-INF /是做正确的事,但还不够。你必须确保在eclipse中资源文件夹被用作“源文件夹”。

要使用文件夹作为源,右键单击包浏览器面板中的文件夹,然后右键单击上下文菜单 - >构建路径 - >用作源文件夹。

然后在Eclipse的WTP构建过程中,Java源文件将被编译,并将它们的字节码类文件放置到WEB-INF/classes文件夹中。

同时,在源代码构建路径中找到的非Java资源将被批量复制到WEB-INF/classes文件夹中 - 这就是您的JPA驱动程序应该找到持久性defn文件的位置。