-1

I am trying to create a jasper report based on data being fetched from mysql database. This is my servelet code

Class.forName("com.mysql.jdbc.Driver");
             Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "root","");
             JasperReport jasperReport = null;
             JasperDesign jasperDesign = null;
             //Map parameters = new HashMap();
             int region = 1;
                 
             //String region = request.getParameter("region_code"); 
                 
                 String Query = "SELECT * FROM areas where = '"+region+"'"; 
             Map<String, Object> map = new HashMap<>();
             map.put("queryAreas", Query);
             String path = getServletContext().getRealPath("/WEB-INF/");
             jasperDesign = JRXmlLoader.load(path + "/Reports/Areas.jrxml");
             JRDesignQuery UpdateQuery = new JRDesignQuery();
             UpdateQuery.setText(Query);
             jasperDesign.setQuery(UpdateQuery);
             
             jasperReport = JasperCompileManager.compileReport(jasperDesign);
             
             JasperPrint jPrint = JasperFillManager.fillReport(jasperReport, null, conn);
             JasperViewer.viewReport(jPrint);
             
             System.out.println("Report generated!");

However when I run my code, i get the following error:

Exception

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

java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/xml/JRXmlLoader
    Reports.Areas.doGet(Areas.java:45)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:670)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause

java.lang.ClassNotFoundException: net.sf.jasperreports.engine.xml.JRXmlLoader
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1412)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220)
    Reports.Areas.doGet(Areas.java:45)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:670)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

I imported all the libraries required and no error is appearing in my java code, only by tomcat server when I run the servlet

Will appreciate all the help I can get

Alex K
  • 22,315
  • 19
  • 108
  • 236
Takue
  • 1
  • 1

1 Answers1

0

The java.lang.NoClassDefFoundError means that the JVM can't find the specified class in the project classpath, so you are probably missing the jasperreports-*.jar in your classpath. Have you already added this dependency in your project?

With maven:

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>${jasper.version}</version>
</dependency>

Or by downloading it an adding manually:

Eclipse - https://www.janbasktraining.com/community/sql-server/how-to-import-a-jar-file-in-eclipse

Intellij - https://www.geeksforgeeks.org/how-to-add-external-jar-file-to-an-intellij-idea-project/

Netbeans - https://users.cs.fiu.edu/~downeyt/webdev/netbeans.html

Also, make sure to have it in tomcat WEB-INF/lib folder too