2015-10-02 29 views
0

我想與Tomcat和servlet的我的Java Web aplication使用JPA了,但是當我嘗試在我的servlet使用JPA這個錯誤發生:錯誤使用JPA,Tomcat和servlet的

java.lang.ClassNotFoundException: javax.persistence.Persistence 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) 
    at com.vorms.controller.NewForm.s(NewForm.java:37) 
    at com.vorms.controller.NewForm.service(NewForm.java:66) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Unknown Source) 

但是,當我在普通的類java中使用相同的代碼,並運行它與Java應用程序完美運行。 Obs:我有罐子。

我的測試代碼是這樣的:

Usuario u = new Usuario("lara", "[email protected]", "123"); 
     EntityManagerFactory factory = Persistence.createEntityManagerFactory("unitvorms"); 
     EntityManager manager = factory.createEntityManager(); 
     manager.getTransaction().begin(); 
     manager.persist(u); 
     manager.getTransaction().commit(); 
     manager.close(); 
     factory.close(); 

我使用MySQL和偏食了。任何人都可以幫助我? rsrsrsrs

回答

0

看來您已將所需的jar添加到您的Eclipse項目的構建路徑,但尚未將它們提供給您的Web應用程序。

你需要的,如果你想多JPA Web應用程序之間共享它們放置JPA罐子(persistence.jar)以及它的實現(像eclipselink.jar)和它們的依賴要麼你的web應用程序的/WEB-INF/lib目錄或{TOMCAT_HOME}/lib部署在同一臺服務器上。

看看這EclipseLink-JPA-Tomcat教程進一步參考。