0

I am trying to use JPA in my Java Web aplication with tomcat and servlets too, but when i try use JPA in my servlet this error happen:

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)

But, when i use the same code in a normal class java and run it with a java aplication its run perfectly. Obs: I have the jar's.

My test code is this:

Usuario u = new Usuario("lara", "l@gmail.com", "123");
        EntityManagerFactory factory = Persistence.createEntityManagerFactory("unitvorms");
        EntityManager manager = factory.createEntityManager();
        manager.getTransaction().begin();
        manager.persist(u);
        manager.getTransaction().commit();
        manager.close();
        factory.close();

I am using Mysql and eclipse too. Anyone can help me? rsrsrsrs

Luan Luna
  • 31
  • 4

1 Answers1

0

It seems you've added the required jars to your Eclipse project's build path but have not made them available to your web application.

You need to place the JPA jars (persistence.jar) as well as its implementation (like eclipselink.jar) and their dependencies to either your web app's /WEB-INF/lib directory or {TOMCAT_HOME}/lib if you want to share them among multiple JPA web apps deployed on the same server.

Take a look at this EclipseLink-JPA-Tomcat tutorial for further reference.

Ravi K Thapliyal
  • 51,095
  • 9
  • 76
  • 89