0

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

9
  • This message suggests that you're missing a JAR dependency: findjar.com/class/javax/persistence/PersistenceException.html Commented Aug 15, 2018 at 18:22
  • It is showing me stack of jars I have no idea which one should i exactly use. Commented Aug 15, 2018 at 18:26
  • The class you're missing is in all of those JARs. Pick the best one for your situation, add it to your CLASSPATH, and see what the next error is. Commented Aug 15, 2018 at 18:45
  • If Maven did indeed pull that dependency down, I'd check your package creation to see if it was added correctly. Commented Aug 15, 2018 at 18:47
  • I added the jar file manually to class path..I am not using Maven. I showed that code as instance. Commented Aug 15, 2018 at 18:54

3 Answers 3

1

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

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks alot..finally a breakthrough after being hunted for 9 hours. You gave me a clue. I kept checking errors, adding required jars to WEB-INF/lib folder, I have to add 18 jar files..Unakku Nandri.
Nanri kishore ;-)
0

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.

1 Comment

It's not maven project..btw
0

The solution is, add below shown jar files

to WEB-INF/lib folder.

jar files

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.