This is the servlet code, here is the report route:
package Controlador;
import Modelo.Conexion;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
public class Reporte extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
createReport(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
createReport(request, response);
}
protected void createReport(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//Mostrar el reporte en formato PDF
response.setContentType("application/pdf");
java.sql.Connection cn;
try {
cn = Conexion.getConexion();
//El que obtiene el diseño del reporte
JasperReport jasperReport = null;
Map parameterMap = new HashMap();
//La direccion del reporte
String reporteJasper = request.getSession().getServletContext().getRealPath("reporte/classic.jasper");
//Cargamos el reporte
jasperReport = JasperManager.loadReport(new FileInputStream(reporteJasper));
//Llenamos con informacion al reporte
JasperPrint jasperPrint = JasperManager.fillReport(jasperReport, parameterMap, cn);
OutputStream oS = null;
oS = response.getOutputStream();
//Y lo convertimos a PDF el reporte
JasperManager.printReportToPdfStream(jasperPrint, oS);
cn.close();
} catch (SQLException ex) {
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
This is the error it throws:
SEVERE: java.lang.NullPointerException
at java.lang.Class.isAssignableFrom(Native Method)
at net.sf.jasperreports.engine.fill.JRFillTextField.getFormat(JRFillTextField.java:706)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:394)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:368)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:499)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2036)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:760)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:270)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
at net.sf.jasperreports.engine.JasperManager.fillReport(JasperManager.java:688)
at Controlador.Reporte.createReport(Reporte.java:47)
at Controlador.Reporte.doGet(Reporte.java:23)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
And from this link I execute it:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Inicio</title>
</head>
<body id="hhmenu">
<link rel="stylesheet" type="text/css" href="hojaestilo.css">
</head>
<div id="menu-wrapper">
<ul id="hmenu">
<li><a >Configuracion</a>
<ul id="sub-menu">
<li><a href="Reporte">REPORTE</a> </li>
</body>
</html>