Reputation: 56
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.
Upvotes: 0
Views: 4201
Reputation: 56
The solution is, add below shown jar files
to WEB-INF/lib folder.
Upvotes: 0
Reputation: 8495
Put your jar under WEB-INF/lib folder. Build your project.It will work.
Upvotes: 1
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