kishoref22
kishoref22

Reputation: 56

java.lang.ClassNotFoundException: javax.persistence.PersistenceException

I am new to Hibernate,servlets. I am trying to store data in mysql database using hibernate from html registration form.. But I am keep getting this error as root cause. here is the two root causes pop up.

HTTP status 500 Internal server error.

Exception

javax.servlet.ServletException: Servlet execution threw an exception
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause

java.lang.NoClassDefFoundError: javax/persistence/PersistenceException
    java.base/java.lang.ClassLoader.defineClass1(Native Method)
    java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1007)
    java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2339)
    org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:829)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1278)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1137)
    kish.hibernate.servletController.registerData.doGet(registerData.java:30)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause

java.lang.ClassNotFoundException: javax.persistence.PersistenceException
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1309)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1137)
    java.base/java.lang.ClassLoader.defineClass1(Native Method)
    java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1007)
    java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2339)
    org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:829)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1278)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1137)
    kish.hibernate.servletController.registerData.doGet(registerData.java:30)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

here is my hibernate.cfg.xml file

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configurationn>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="hibernate.connection.password">Kish</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/demo</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <property name="hbm2ddl.auto">create</property> <!-- create table every time -->
        <property name="show_sql">true</property>
        <mapping class="kish.hibernate.Pojo.Student"></mapping>

    </session-factory>

</hibernate-configurationn>

here is my html file

<html> 
<head>
<title> RegistrationForm</title>
<link rel = "stylesheet" type = "text/css" href = "style1.css">
<body>


  <div class= "registrationBox">
        <img src= "avatar1.png" class= "avatar">
     <h1> enter your details below form</h1>   

<form action = "registerData" method ="get"> 
    <p>Firstname</p>
    <input type="text" name="first_name" placeholder="Enter your firstname">
   <p>Lastname</p>
   <input type = "text" name= "last_name" placeholder="Your lastname ">
   <p>Branch</p>
   <input type = "text" name="branch" placeholder="your branch">
   <p>Id</p>
   <input type = "text" name = "Id" placeholder="your id">
   <p>password</p>
   <input type="password" name="password" placeholder="create your password">
   <input type="submit" name="submit" value = "confirm">
 </form>
</div>

</body>
</head>
</html>

servlet file registerData.java

[package kish.hibernate.servletController;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import kish.hibernate.DAO.MainController;

@WebServlet("/registerData")
public class registerData extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public registerData() {
        super();
    }


    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String first_name = request.getParameter("first_name");
        String last_name = request.getParameter("last_name");
        String branch = request.getParameter("branch");
        int Id = Integer.parseInt(request.getParameter("Id"));
        String password = request.getParameter("password");


        MainController mc = new MainController();
        mc.addUserDeatails(first_name, last_name, branch, Id, password);
        response.sendRedirect("success");

    }

}

I will post any further data if needed.

Any suggestions appreciated. Thanks.

Edit:

"javax.persistence.jar"

It clearly contains "javax.persistence.PersistenceException.class"

added this jar and still showing the same error.

updated jar file in classpath

Upvotes: 0

Views: 4201

Answers (3)

kishoref22
kishoref22

Reputation: 56

The solution is, add below shown jar files

to WEB-INF/lib folder.

jar files

Upvotes: 0

Sundararaj Govindasamy
Sundararaj Govindasamy

Reputation: 8495

Put your jar under WEB-INF/lib folder. Build your project.It will work.

Upvotes: 1

Mohsin Khan
Mohsin Khan

Reputation: 100

ClassNotFoundException comes when JVM tries to the load a class at runtime dynamically

NoClassDefFoundError the problematic class was present during Compile time and that's why the program successfully compiled but not available during runtime for any reason

Please check your class path. Since its maven please check the lib folder path in your setting.xml and check if the jar is available in m2.repository.

Upvotes: 0

Related Questions